Ce face server
Blocul server definește un server virtual, echivalentul unui „virtual host” din Apache. Pe același Nginx pot exista oricâte blocuri server, fiecare pentru alt domeniu sau alt port. Blocul se scrie în contextul http (direct sau prin fișierele incluse din sites-enabled/conf.d).
Când primește o cerere, Nginx alege întâi blocurile care ascultă pe adresa și portul respectiv (directiva listen), apoi pe cel al cărui server_name corespunde antetului Host. Dacă niciun nume nu se potrivește, cererea ajunge la serverul implicit (default_server) pentru acel port sau, în lipsa lui, la primul bloc definit.
În interiorul blocului se pun directivele specifice site-ului (root, index, log-uri, certificate) și blocurile location. Multe directive declarate în http sunt moștenite în server și pot fi suprascrise acolo.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
Context: http |
Blocul server poate apărea doar în contextul http (sau în stream/mail, pentru proxy TCP/e-mail). |
listen |
Adresa și portul pe care ascultă serverul virtual. |
server_name |
Numele de domeniu servite de bloc. |
root / index |
Directorul cu fișierele site-ului și fișierul implicit. |
location |
Blocuri cu reguli pentru anumite URI-uri. |
access_log / error_log |
Jurnale separate pentru fiecare site. |
Exemple
Exemplul 1: Un site static simplu
Fișierul /etc/nginx/sites-available/example.com:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/public;
index index.html;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
Exemplul 2: Server implicit care respinge domeniile necunoscute
Cererile cu un Host necunoscut (sau direct pe IP) primesc codul special 444: Nginx închide conexiunea fără răspuns.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
Exemplul 3: Verificarea răspunsului
Testăm de pe alt calculator ambele blocuri, simulând antetul Host:
curl -I -H 'Host: example.com' http://203.0.113.10/
curl -I -H 'Host: necunoscut.ro' http://203.0.113.10/
Rezultat
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 23 Oct 2026 08:25:10 GMT
Content-Type: text/html
Content-Length: 1543
Last-Modified: Tue, 20 Oct 2026 10:01:44 GMT
Connection: keep-alive
ETag: "6714d4d8-607"
Accept-Ranges: bytes
curl: (52) Empty reply from server
Greșeli frecvente
- Lipsa unui
default_serverexplicit: cererile pentru domenii necunoscute ajung la primul bloc în ordine alfabetică a fișierelor, adică uneori la un site greșit. - Două blocuri
servercu acelașiserver_nameși același port:nginx -tafișează[warn] conflicting server name, iar al doilea bloc este ignorat.
Comenzi înrudite
listen: Stabilește adresa IP și portul pe care un bloc server acceptă conexiuni.server_name: Stabilește numele de domeniu (antetul Host) pentru care răspunde un bloc server.location: Potrivește calea URI a cererii (exact, cu prefix sau cu expresie regulată) și aplică regulile corespunzătoare.nginx.conf și sites-available: Cum sunt organizate fișierele de configurare: nginx.conf, include, conf.d, sites-available și sites-enabled.