Конфигурационный файл Nginx (nginx.conf) расположен в /etc/nginx/nginx.conf. Основной файл подключает дополнительные конфиги через директиву include /etc/nginx/sites-enabled/* (Debian/Ubuntu) или include /etc/nginx/conf.d/*.conf (RHEL/CentOS). Синтаксис иерархический: блоки с директивами вложены друг в друга.
Структура конфигурации
user www-data;
worker_processes auto;
events {
worker_connections 1024;
}
http {
include mime.types;
gzip on;
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
include fastcgi_params;
}
}
}
Ключевые блоки и директивы
events — настройки обработки соединений. worker_connections — максимум соединений на одного worker.
http — глобальные настройки HTTP: сжатие, keepalive, буферы, типы MIME.
server — виртуальный хост. Директива listen указывает порт и опции (ssl, http2). server_name — доменные имена. Несколько server-блоков с разными server_name на одном SNI-порту обеспечивают виртуальный хостинг.
location — правило обработки URL. Матчинг: точный (=), префиксный, без регулярки (~* и ~). Директивы proxy_pass, fastcgi_pass, uwsgi_pass перенаправляют в upstream.
История
Формат конфигурационного файла Nginx задан с первого публичного релиза в 2004 году и с тех пор принципиально не менялся. Синтаксис вдохновлён форматом конфигов Postfix. В Nginx Plus 2015 года добавлен динамический апстрим через API без перезагрузки конфига.
Связь с хостингом
На VPS конфигурация Nginx создаётся вручную или через панели (ISPmanager, CyberPanel, hPanel). Типичные задачи: добавить SSL/TLS (директивы ssl_certificate, ssl_protocols, ssl_ciphers), настроить reverse proxy к Node.js или PHP-FPM, включить gzip, задать кэширующие заголовки. Проверить синтаксис конфига: nginx -t. Применить без перезапуска: nginx -s reload.
Структура конфигурации Nginx
Иерархия: http { server { location {} } }. Директивы наследуются вниз и могут быть переопределены. Включение файлов: include /etc/nginx/conf.d/*.conf. Каждый сайт — отдельный файл в conf.d или sites-enabled.
Оптимизация производительности
worker_processes auto — число CPU. worker_connections 4096. keepalive_timeout 65. gzip on; gzip_types text/plain text/css application/json application/javascript. Для статики: expires 1y; add_header Cache-Control "public".
Типичные ошибки в конфигурации
Пропущен proxy_set_header X-Forwarded-For — приложение видит IP балансировщика. proxy_buffer_size мал для больших заголовков (JWT-токены). Забыто try_files $uri $uri/ /index.php?$args для WordPress. Директива server_name _ для default server.