Nginx
Főnév
Nginx (tsz. Nginxes)
- (informatika, számítógép-hálózatok) Az Nginx (ejtsd: “engine-x”) egy nyílt forráskódú webszerver, amelyet HTTP és más protokollok kiszolgálására, proxy szolgáltatásokra, terheléselosztásra és fordított proxyként használnak. Az Nginx rendkívül hatékony, mivel nemcsak statikus tartalmakat szolgál ki gyorsan, hanem jól skálázódik nagy forgalmú webhelyek esetén is, köszönhetően eseményvezérelt, aszinkron architektúrájának.
Az Nginx-t eredetileg azért hozták létre, hogy kezelje a “C10k” problémát, vagyis hogy egyetlen szerver több mint 10 000 egyidejű kapcsolatot legyen képes kezelni. Az Nginx mára a legnépszerűbb webszerverek közé tartozik, és különösen jól teljesít nagy terhelés alatt, dinamikus alkalmazásokkal együtt.
Főbb jellemzők
- Magas teljesítmény és skálázhatóság:
- Az Nginx nem blokkoló, eseményvezérelt architektúrát használ, amely lehetővé teszi, hogy minimális erőforrásokkal sok egyidejű kapcsolatot kezeljen, különösen statikus tartalmak esetén.
- Fordított proxy (Reverse Proxy):
- Az Nginx képes fordított proxyként működni, ami azt jelenti, hogy elrejti a háttérszervereket, és elosztja a beérkező kéréseket a háttérben futó több szerver között. Ez javítja a biztonságot és a teljesítményt, és lehetővé teszi a terheléselosztást.
- Terheléselosztás (Load Balancing):
- Az Nginx beépített terheléselosztó képességekkel rendelkezik, amelyek lehetővé teszik, hogy a bejövő forgalmat egyenletesen ossza el több háttérszerver között. Ezzel növeli a rendelkezésre állást és javítja a teljesítményt.
- Statikus és dinamikus tartalmak kiszolgálása:
- Az Nginx kiválóan alkalmas statikus fájlok, például HTML, CSS, JavaScript, képek és videók gyors kiszolgálására. Dinamikus tartalmak kiszolgálására is használható más alkalmazásokkal, például PHP, Node.js, Python együttműködésében.
- SSL/TLS támogatás:
- Az Nginx teljes mértékben támogatja a HTTPS protokollt, beleértve az SSL/TLS titkosítást, így biztosítva a webes forgalom biztonságát.
- HTTP/2 és gRPC támogatás:
- Az Nginx támogatja az újabb webprotokollokat, például a HTTP/2-t és a gRPC-t, amelyek növelik a teljesítményt és a hatékonyságot, különösen a modern webalkalmazásokban.
- Proxy cache:
- Az Nginx támogatja a proxy cache-t, amely lehetővé teszi a tartalom gyorsítótárazását, így javítja a teljesítményt és csökkenti a háttérszerverek terhelését.
- Főbb használati esetek:
- Webszerverként statikus tartalmak kiszolgálására.
- Fordított proxyként vagy terheléselosztóként dinamikus webalkalmazásokhoz (pl. PHP, Node.js).
- Biztonságos HTTPS kiszolgálóként SSL tanúsítvánnyal.
- Cache és proxy szerverként, amely gyorsítja a webes válaszidőket.
Nginx telepítése
Az Nginx telepítése viszonylag egyszerű, és a legtöbb Linux disztribúció csomagkezelője támogatja. A telepítés folyamata a rendszertől függően változhat.
Nginx telepítése Ubuntu/Debian rendszeren
A csomagkezelő frissítése:
sudo apt update
Nginx telepítése:
sudo apt install nginx
Nginx indítása:
Az Nginx szolgáltatás elindítása:
sudo systemctl start nginx
Nginx engedélyezése az automatikus indításhoz:
Hogy az Nginx automatikusan induljon a rendszer indításakor:
sudo systemctl enable nginx
Tesztelés:
Miután telepítetted és elindítottad az Nginx-t, a böngészőben látogass el a szerver IP-címére vagy a
localhost
címre:http://localhost
Ha mindent jól csináltál, megjelenik az Nginx üdvözlő oldala.
Nginx telepítése CentOS/Fedora rendszeren
A csomagkezelő frissítése:
sudo yum update
Nginx telepítése:
sudo yum install nginx
Nginx indítása:
sudo systemctl start nginx
Nginx engedélyezése az automatikus indításhoz:
sudo systemctl enable nginx
Nginx konfiguráció
Az Nginx fő konfigurációs fájlja általában a következő helyen található:
- Ubuntu/Debian:
/etc/nginx/nginx.conf
- CentOS/Fedora:
/etc/nginx/nginx.conf
A konfigurációs fájlok általában több részre vannak osztva, például az alapvető konfigurációra, virtuális hostokra, és további beállításokra.
Alapvető Nginx konfigurációs példa
Az alábbiakban egy egyszerű Nginx konfigurációs fájl látható, amely statikus fájlokat szolgál ki egy adott mappából:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Magyarázat:
- listen 80: A szerver az alapértelmezett 80-as HTTP porton figyel.
- server_name: A domain név, amelyet a szerver kiszolgál, például
example.com
. - root: A webhely gyökérkönyvtára, ahol az index fájlok és a statikus tartalmak találhatók.
- index: Az alapértelmezett fájlok, amelyeket a szerver kiszolgál, ha nincs megadva konkrét fájlnév.
- location: A kérésekhez tartozó útvonalak kezelése. Itt például ellenőrzi, hogy a kéréshez tartozó fájl létezik-e, ha nem, akkor 404-es hibát ad.
Virtuális hostok beállítása
Az Nginx támogatja a virtuális hostok (Server Blocks) használatát, amelyek lehetővé teszik több domain kezelését egyetlen szerverről. Például, ha két különböző domainhez szeretnél külön konfigurációkat beállítani.
Például egy virtuális host beállítása:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /404.html {
internal;
}
}
- server_name: Az a domain név, amelyet a szerver kiszolgál (pl.
example.com
éswww.example.com
). - root: A domainhez tartozó webes fájlok könyvtára.
- error_page: Testreszabott hibaoldalak, például 404-es hibaoldal beállítása.
SSL/TLS engedélyezése HTTPS-hez
Az Nginx könnyen konfigurálható HTTPS kiszolgálásra. Ehhez SSL tanúsítványt kell használnod, például a Let’s Encrypt tanúsítványt.
Példa HTTPS konfigurációra:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs
/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
- listen 443 ssl: A szerver a 443-as HTTPS porton figyel.
- ssl_certificate és ssl_certificate_key: Az SSL tanúsítvány és a privát kulcs fájlok helye.
Terheléselosztás (Load Balancing) az Nginx-ben
Az Nginx beépített terheléselosztási mechanizmusokat kínál, amelyek lehetővé teszik, hogy a bejövő forgalmat több háttérszerver között ossza szét.
Példa terheléselosztásra:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
- upstream: Definiálja a háttérszervereket, amelyek között az Nginx elosztja a forgalmat.
- proxy_pass: A forgalom átirányítása a háttérszerverek felé.
- proxy_set_header: További HTTP fejléceket állít be a proxyzás során, például az eredeti IP-címet és a protokollt.
Nginx gyorsítótárazás
Az Nginx képes gyorsítótárként is működni, tárolva a gyakran használt tartalmakat, hogy javítsa a teljesítményt és csökkentse a háttérszerver terhelését.
Példa egyszerű proxy gyorsítótár beállításra:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 1h;
proxy_cache_bypass $http_cache_control;
}
}
Összegzés
Az Nginx egy hatékony és rugalmas webszerver, amely kiválóan alkalmas statikus és dinamikus tartalmak kiszolgálására, fordított proxyként és terheléselosztóként való működésre. Magas teljesítménye és alacsony erőforrásigénye miatt különösen népszerű nagy forgalmú weboldalak és alkalmazások esetében. Könnyen testreszabható és bővíthető különféle modulokkal és konfigurációkkal, így széleskörűen használják kis- és nagyvállalati környezetben is.