Ce face listen
Directiva listen spune pe ce adresă și port ascultă blocul server. Dacă lipsește, valoarea implicită este *:80 (sau *:8000 când Nginx rulează fără root). Adresele IPv6 se scriu între paranteze drepte: [::]:80.
Pentru HTTPS se folosește listen 443 ssl;. Începând cu Nginx 1.25.1, HTTP/2 se activează cu directiva separată http2 on;; vechiul parametru listen 443 ssl http2; încă funcționează, dar generează un avertisment de depreciere. HTTP/3 se activează din 1.25.0 cu listen 443 quic reuseport;, dacă Nginx este compilat cu modulul http_v3.
Parametrul default_server marchează blocul care primește cererile pentru care niciun server_name nu se potrivește. Parametrii care țin de socket (default_server, reuseport, backlog, ipv6only) pot fi specificați o singură dată pentru fiecare combinație adresă:port.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
Context: server |
Directiva se folosește doar în blocul server. |
adresă:port |
De exemplu 80, 127.0.0.1:8080, [::]:443 sau unix:/run/nginx.sock. |
default_server |
Blocul implicit pentru această adresă și acest port. |
ssl |
Toate conexiunile pe acest port folosesc TLS (necesită ssl_certificate). |
quic |
Ascultă HTTP/3 peste QUIC (UDP), din Nginx 1.25.0. |
reuseport |
Creează un socket separat pentru fiecare worker (performanță mai bună; necesar pentru QUIC). |
http2 on; |
Directivă separată (1.25.1+), context http, server: activează HTTP/2. Înlocuiește parametrul depreciat listen ... http2. |
Exemple
Exemplul 1: HTTP și HTTPS cu HTTP/2 (Nginx 1.25.1+)
Forma modernă, fără avertismente de depreciere:
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
root /var/www/example.com/public;
}
Exemplul 2: Avertismentul pentru forma veche
Pe Nginx 1.25.1+, listen 443 ssl http2; funcționează, dar nginx -t afișează:
sudo nginx -t
Ieșire în terminal
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/sites-enabled/example.com:2
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Exemplul 3: Aplicație internă disponibilă doar local
Ascultând pe 127.0.0.1, blocul nu este accesibil din exterior:
server {
listen 127.0.0.1:8080;
server_name localhost;
location /nginx_status {
stub_status;
}
}
Greșeli frecvente
- Specificarea
default_serverpe același port în două blocuri:nginx -teșuează cu[emerg] a duplicate default server for 0.0.0.0:80. - Uitarea liniei
listen [::]:80;: site-ul nu răspunde clienților care se conectează prin IPv6, deși DNS-ul are înregistrare AAAA. - Folosirea
listen 443;fărăssl: Nginx servește HTTP simplu pe portul 443, iar browserele raporteazăERR_SSL_PROTOCOL_ERROR.
Comenzi înrudite
server: Definește un server virtual (un site) cu porturile, numele de domeniu și regulile sale.ssl_certificate și HTTPS: Configurează certificatul, cheia privată, versiunile TLS (1.2/1.3) și cache-ul de sesiuni pentru HTTPS.server_name: Stabilește numele de domeniu (antetul Host) pentru care răspunde un bloc server.