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.cominclude șiexample.com. Nu îl include; folosește.example.comsau listează ambele nume. - A te baza pe
server_name _;pentru serverul implicit fărădefault_serverînlisten. - 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 bloculhttp.
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).