nginx.conf și sites-available în Nginx

Comenzi de administrare Debian/Ubuntu; conf.d pe toate distribuțiile

Cum sunt organizate fișierele de configurare: nginx.conf, include, conf.d, sites-available și sites-enabled.

Sintaxă
include cale/fișiere/*.conf;

Ce face nginx.conf și sites-available

Fișierul principal este /etc/nginx/nginx.conf. El conține contextul principal (user, worker_processes, pid), blocul events și blocul http, în care se definesc setările comune tuturor site-urilor. Restul configurației este adus cu directiva include, care acceptă și măști de tip *.conf.

Pe Debian și Ubuntu, fiecare site are un fișier în /etc/nginx/sites-available/; site-ul devine activ când creezi o legătură simbolică (symlink) către el în /etc/nginx/sites-enabled/. Pe Rocky, AlmaLinux, Fedora și în pachetele oficiale nginx.org se folosește doar /etc/nginx/conf.d/*.conf. Ambele variante sunt doar convenții: totul depinde de liniile include din nginx.conf.

Directiva include poate fi folosită în orice context. Fragmentele reutilizabile (de exemplu parametrii FastCGI sau setările SSL comune) se pun de obicei în /etc/nginx/snippets/ și se includ în blocurile server care au nevoie de ele.

Opțiuni și argumente

Opțiune / Parametru Descriere
include fișier | mască; Include conținutul fișierelor indicate în locul directivei. Context: oricare.
/etc/nginx/nginx.conf Fișierul principal: user, worker_processes, events, http.
/etc/nginx/conf.d/*.conf Configurări suplimentare incluse în blocul http (doar fișierele cu extensia .conf).
/etc/nginx/sites-available/ Debian/Ubuntu: fișierele tuturor site-urilor, active sau nu.
/etc/nginx/sites-enabled/ Debian/Ubuntu: symlink-uri către site-urile active; incluse din nginx.conf.
/etc/nginx/snippets/ Fragmente reutilizabile, de exemplu fastcgi-php.conf.

Exemple

Exemplul 1: Structura blocului http din nginx.conf

Versiune simplificată a fișierului livrat de Ubuntu:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
}

http {
    sendfile on;
    tcp_nopush on;
    types_hash_max_size 2048;
    server_tokens off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    gzip on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Exemplul 2: Activarea unui site nou

Creăm fișierul în sites-available, facem symlink-ul și reîncărcăm:

sudo nano /etc/nginx/sites-available/example.com
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
ls -l /etc/nginx/sites-enabled/

Ieșire în terminal

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
total 0
lrwxrwxrwx 1 root root 34 Oct 20 11:02 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 38 Oct 23 08:20 example.com -> /etc/nginx/sites-available/example.com

Exemplul 3: Dezactivarea unui site

Ștergem doar symlink-ul; fișierul original rămâne în sites-available.

sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx

Ieșire în terminal

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Greșeli frecvente

  • Crearea symlink-ului cu o cale relativă greșită (ln -s ../sites-available/site rulat din alt director): legătura este „ruptă”, iar nginx -t raportează open() ... failed (2: No such file or directory). Folosește căi absolute.
  • Lăsarea fișierelor de backup (de exemplu example.com.bak) în sites-enabled/: masca * le include și pe ele, ceea ce duce la blocuri server duplicate.
  • Editarea fișierului în sites-enabled cu editoare care înlocuiesc symlink-ul cu o copie: modificările ulterioare din sites-available nu mai au efect.

Comenzi înrudite

  • server: Definește un server virtual (un site) cu porturile, numele de domeniu și regulile sale.
  • nginx -V / nginx -T: Afișează versiunea și modulele compilate (-V) sau întreaga configurație rezultată (-T).
  • nginx -t: Testează sintaxa fișierelor de configurare fără a opri sau reporni serverul.