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/siterulat din alt director): legătura este „ruptă”, iarnginx -traporteazăopen() ... failed (2: No such file or directory). Folosește căi absolute. - Lăsarea fișierelor de backup (de exemplu
example.com.bak) însites-enabled/: masca*le include și pe ele, ceea ce duce la blocuri server duplicate. - Editarea fișierului în
sites-enabledcu editoare care înlocuiesc symlink-ul cu o copie: modificările ulterioare dinsites-availablenu 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.