Nginx

From EIK wiki

Sissejuhatus

Nginx on tasuta, avatud lähtekoodiga, kõrgjõudlusega HTTP server ja reverse proxy, samuti IMAP/POP3 proxy server. Nginx'i areng algas aastal 2002, esimene avalik väljalase oli aastal 2004 Igor Sysoev poolt. Hetkel on nginx kasutusel ligi 7,65% (22.8M) kõikidest domeenidest üle maailma.

Nginx on tuntud oma suure jõudluse, stabiilsuse, lihtsa seadistamise ja madal ressursside tarbimisega.

Nginx on kirjutatud haldama C10K probleemi (haldama korraga 10000 klienti). Nginx kasutab skaleeritavaid asünkroonnseid arhitektuure. Selline arhitektuur kasutab vähe mälu koormuse all. Isegi kui ei ole soovi samal ajal tuhandeid kliente teenindada saab siiski kasu nginx suure jõudlusest ja väiksest mälukasutusest. Nginx'is on palju võimalusi, kuni klastriteni serveris.

Paigaldamine

Enamik Linuxi ja BSD distrodes on nginx tavalistest pakettides olemas ning neid saab paigaldada vastava distro paigaldus tarkvaraga. Tasub meeles pidada, et need paketid on tihti vanemate versionidega nginx'ist. Uuemate verasioonide saamiseks on soovitatav paigaldada nginx algallikast.

Ubuntu

Kasutajal peavad olema root õigused käskude sisestamiseks. Ubuntu 10.04 ja uuem:

sudo -s
nginx=stable # use nginx=development for latest development version
add-apt-repository ppa:nginx/$nginx
apt-get update 
apt-get install nginx

Kui tekib viga, et add-apt-repository ei eksisteeri , siis oleks vaja paigaldada python-tarkvara-omadused.

Teiste Debian / Ubuntu põhinevatel distributsioonide kasutamisel, võib proovida PPA varianti, mis kõige tõenäolisemalt töötab vanemate pakettidega.

sudo -s
nginx=stable # use nginx=development for latest development version
echo "deb http://ppa.launchpad.net/nginx/$nginx/ubuntu lucid main" > /etc/apt/sources.list.d/nginx-$nginx-lucid.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
apt-get update 
apt-get install nginx

Win32 Binaries

Alates versioonist 0.8.50 on nginx'is saadaval ka windowsi binaarfailid. Windowsi versioon on saadaval ainult binaarfailidena. Paigaldamine:

cd c:\
unzip nginx-1.0.1.zip
ren nginx-1.0.1 nginx
cd nginx
start nginx

Probleemide puhul võib vaadata logifaili c:\nginx\logs\error.log.

Paigaldamine algallikast

Pärast algallika lahtipakkimist on vaja käivitada terminalis kolm käsku:

./configure
make
sudo make install 

Nginx paigaldatakse asukohta /usr/local/nginx. Asukohta on muidugi võimalik muuta kompileerimise käigus.


Moodulid

Nginx moodulid tuleb valida kompileerimise ajal. Kõik moodulid vajalikud ning sealhulgas vabatahtlikud moodulid, on kirjas paigaldusjuhendist. Näide:

./configure \
  --prefix=/usr \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_gzip_static_module \
  --http-log-path=/var/log/nginx/access.log \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ 

Kõige uuemad nimekirjad moodulitest ja valikutest on saadaval käsuga: "./configure --help"

Nõutud moodulid

Nimi Kirjeldus
Main Muudatuste vigade logimine, protsessid, õigused, jne.
Events Muudatuse epoll, kqueue, select, poll, jne.


Automaatselt lisatud moodulid

... kui spetsiaalselt ei ole ära keelatud:

Nimi Kirjeldus Versioon Muudatuse argument keelamiseks
Core Muudatuste vigade logimine, protsessid, õigused, jne. --without-http
Access Lubamine / keelamine IP aadressi põhiselt --without-http_access_module
Auth Basic HTTP autentimine --without-http_auth_basic_module
Auto Index Genereerib autmaatselt kaustade listid --without-http_autoindex_module
Browser Tõlgendab "User-Agent" stringi --without-http_browser_module
Charset rekodeerima veebilehtesid --without-http_charset_module
Empty GIF serveerib 1x1 pildi mälust --without-http_empty_gif_module
FastCGI FastCGI tugi --without-http_fastcgi_module
Geo Määrab konfigureerimise muutujaid kasutades võtme / väärtuse paare IP-aadressides --without-http_geo_module
Gzip Gzip vastused --without-http_gzip_module
Headers Määrab suvalise HTTP vastuse päises.
Index Kontrollib millised failid on kasutusel indexina
Limit Requests Limiteerib ühenduste sageduse klientilt 0.7.20 --without-http_limit_req_module
Limit Zone Limiteerib samaaegselt ühendused klientilt --without-http_limit_zone_module
Log Kohandab juurdepääsu logisid
Map Määrab seadistamise muutujaid kasutades suvalisi võtme/väärtuse paare --without-http_map_module
Memcached Memcached toetus. --without-http_memcached_module
Proxy Puhverserver. --without-http_proxy_module
Referer Filtreerimine päise järgi. --without-http_referer_module
Rewrite Ümberkirjutamine kasutades regulaaravaldisi. --without-http_rewrite_module
scgi scgi protokolli tugi. 0.8.42 --without-http_scgi_module
Split Clients 0.8.37 --without-http_split_clients_module
SSI Serveri pool. --without-http_ssi_module
Upstream Laadimise tasakaalustamine. --without-http_upstream_ip_hash_module
User ID Identifitseerimise küpsised. --without-http_userid_module
uwsgi uwsgi protokolli toetus. 0.8.40 --without-http_uwsgi_module
X-Accel X-Sendfile-like moodul.


Valikulised HTTP moodulid

Järgnevad moodulid peavad olema lubatud kompilerimise ajal.

Nimi Kirjeldus Versioon Muudatuse argument lubamiseks
Addition Lisab teksti lehtedele --with-http_addition_module
Degradation 0.8.25 --with-http_degradation_module
Embedded Perl Kasutab Perl'i Nginx konfigureerimise failides --with-http_perl_module
FLV Flash Streaming Video --with-http_flv_module
GeoIP Loob muutujad informatsiooniga MaxMind GeoIP binaar failidest 0.8.6, 0.7.63 --with-http_geoip_module
Google Perftools Google jõudluse kasutamise tugi 0.6.29 --with-google_perftools_module
Gzip Precompression Serveerib lahti pakitud versioonid staatilistest failidest 0.6.23 --with-http_gzip_static_module
Image Filter Muudab pildid Libgd'ga 0.7.54 --with-http_image_filter_module
Random Index Seadistab juhuslikud kataloogi indexid 0.7.15 --with-http_random_index_module
Real IP Nginx'i backendina kasutamiseks --with-http_realip_module
Secure Link Kaitseb lehti turvalise võtmega 0.7.18 --with-http_secure_link_module
SSL HTTPS/SSL tugi --with-http_ssl_module
Stub Status Serveri statistika vaatamiseks --with-http_stub_status_module
Substitution Asendab teksti lehtedel --with-http_sub_module
WebDAV WebDAV läbipääsu tugi --with-http_dav_module
XSLT Järeltöötleb lehti XSLT'iga 0.7.8 --with-http_xslt_module


Maili moodulid

Nimi Kirjeldus Konfigureerimise argument
Core Nginx'is on võimalik kasutada IMAP, POP3, SMTP protokolle --with-mail, --without-mail_pop3_module, --without-mail_imap_module, --without-mail_smtp_module
Auth Kasutab nginx'i maili serverite autentimiseks
Proxy Nginx on võimalik kasutada IMAP, POP3 ja SMTP proxy's
SSL Moodul tagab SSL / TLS toetuse POP3/IMAP/SMTPis --with-mail_ssl_module

Lisad

Need moodulid ei ole ametlikult toetatud. Siiski paljud neist võib osutuda kasulikuks ning kasutamine on omal vastutusel. Moodulid on tavaliselt lisatud nginx'i algallikas. Nginx'i kataloogis kirjutage:

./configure --add-module=/path/to/module1/source \
            --add-module=/path/to/module2/source

Võib kasutada nii palju kui tahad "--add-module" argumente. Arvestada tasub, et mõned moodulid vajavad lisa tarkvara installeerimist süsteemi.

Tuntud mooduli

Nimi Kirjeldus
Access Key Keelab ligipääsu, kui just URL ei nõua juurdepääsu võtit
AFCGI Multipleksimise FastCGI jaoks nginx'is
Array Var Lisab toetuse array muutujate jaoks konfigureerimise failides
Auth PAM HTTP autentimises kasutades PAM'i
Auto Lib Taaskasutab eel-kompileeritud versioone OpenSSL, PCRE ja Zlib ilma, et peaks uuesti kompileerima kui Ngix'i kompileeritakse
Cache Purge Moodul võimaldab puhastada sisu FastCGI, proxy, ja uWSGI vahemälust
Circle GIF Genereerib ümarad pildid kindla värvi ja suurusega URL'is
Development Kit Core laiendamise funktsioon mida sab kasutada teiste moodulitega
Drizzle Nginxi suhtlemiseks otse mysql ja drizzle'iga
Echo Toob "echo", "sleep", "time", "exec" shell-stiilis lisad nginx'i config faili
GeoIP Riigi koodide otsing kasutades MaxMind GeoIP API
GridFS Nginx'i moodul lugemaks faile MongoDB's GridFS'st
Headers More Lisab ja eemaldab sisendeid ja välundeid päisest
HTTP Redis Redis'e toetus
Iconv nginx'i konverteerimine kasutades libiconv'i.
Image Hacker Piltide töötlemine
Log Request Speed Aja, mis võttis iga päringi töötlemine, logimine
Memc Memcached'i laiendatud versioon,mis toetab set,add,delete ja muid käske.
Notice POST taotlusele serveerib staatilisi faile
RRD Graph HTTP liidesele grafilise väljundi lisamiseks RRDtool'is
Secure Download Loob kehtetud lingid
sFlow Tegevuse monitoorimiseks sFlow protokollis
Strip Tühiku eemaldamiseks
Upload Progress Jälgib üleslaadimist
Zip Kogub zip arhiive

Tööriistad mooduli arendajale

Nimi Kirjeldus
Nginx Auto Lib Core Fail moodul arendajatele enda moodulite lisamiseks
Nginx Development Kit Core funktsionaalsuse laiendamiseks, mida saab kasutada teiste moodulitega

Kasutatud kirjandus