server_name în Nginx

Blocuri de bază Toate versiunile Nginx

Stabilește numele de domeniu (antetul Host) pentru care răspunde un bloc server.

Sintaxă
server_name nume [nume ...];

Ce face server_name

Directiva server_name listează domeniile pentru care răspunde blocul server. Nginx compară antetul Host al cererii (sau numele SNI, la HTTPS) cu aceste nume. Sunt acceptate nume exacte, wildcard-uri (*.example.com, www.example.*) și expresii regulate care încep cu ~.

Ordinea de alegere este: (1) numele exact; (2) cel mai lung wildcard care începe cu *; (3) cel mai lung wildcard care se termină cu *; (4) prima expresie regulată care se potrivește, în ordinea din configurație. Forma specială .example.com acoperă atât example.com, cât și toate subdomeniile.

Numele _ nu are nimic special: este doar un nume invalid, folosit prin convenție în blocul default_server. Ce face blocul implicit este parametrul default_server din listen, nu numele _.

Opțiuni și argumente

Opțiune / Parametru Descriere
Context: server Directiva se folosește în blocul server. Implicit: server_name "";.
example.com Nume exact (căutare cea mai rapidă).
*.example.com Wildcard la început: toate subdomeniile, dar nu și example.com.
.example.com Formă scurtă pentru example.com *.example.com.
~^(?<sub>.+)\.example\.com$ Expresie regulată; grupurile capturate devin variabile (aici $sub).
_ Nume invalid folosit prin convenție pentru serverul „catch-all”.

Exemple

Exemplul 1: Domeniul principal și varianta www

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/public;
}

Exemplul 2: Câte un director pentru fiecare subdomeniu

Grupul numit sub din expresia regulată este folosit în root: blog.example.com servește /var/www/sub/blog.

server {
    listen 80;
    server_name ~^(?<sub>[a-z0-9-]+)\.example\.com$;
    root /var/www/sub/$sub;

    location / {
        try_files $uri $uri/ =404;
    }
}

Exemplul 3: Testarea selecției fără DNS

Cu --resolve, curl trimite numele corect (inclusiv SNI) către IP-ul serverului:

curl -I --resolve blog.example.com:80:203.0.113.10 http://blog.example.com/

Rezultat

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 23 Oct 2026 08:31:02 GMT
Content-Type: text/html
Content-Length: 812
Connection: keep-alive

Greșeli frecvente

  • A crede că *.example.com include și example.com. Nu îl include; folosește .example.com sau listează ambele nume.
  • A te baza pe server_name _; pentru serverul implicit fără default_server în listen.
  • Nume foarte lungi sau foarte multe nume pot produce eroarea could not build server_names_hash, you should increase server_names_hash_bucket_size; soluția este creșterea acelei valori în blocul http.

Comenzi înrudite

  • server: Definește un server virtual (un site) cu porturile, numele de domeniu și regulile sale.
  • listen: Stabilește adresa IP și portul pe care un bloc server acceptă conexiuni.
  • Redirecționare HTTP → HTTPS: Tiparul recomandat pentru redirecționarea traficului de pe portul 80 pe HTTPS (și canonizarea cu sau fără www).