server în Nginx

Blocuri de bază Toate versiunile Nginx

Definește un server virtual (un site) cu porturile, numele de domeniu și regulile sale.

Sintaxă
server { ... }

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_server explicit: cererile pentru domenii necunoscute ajung la primul bloc în ordine alfabetică a fișierelor, adică uneori la un site greșit.
  • Două blocuri server cu același server_name și același port: nginx -t afiș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.