Ответ
Основной (главный) конфигурационный файл Nginx находится по пути /etc/nginx/nginx.conf. Именно этот файл загружается первым при запуске демона nginx.
Стандартная структура конфигурации в Linux-дистрибутивах:
/etc/nginx/
├── nginx.conf # Главный конфигурационный файл
├── conf.d/ # Дополнительные конфиги (*.conf), автоматически включаются
├── sites-available/ # Доступные конфигурации виртуальных хостов (симлинки не обязаны быть здесь)
├── sites-enabled/ # Активные виртуальные хосты (симлинки на файлы из sites-available/)
├── modules-available/ # Доступные динамические модули
├── modules-enabled/ # Включенные динамические модули
├── mime.types # Типы MIME
└── snippets/ # Переиспользуемые фрагменты конфигурации (например, security headers)
Как главный nginx.conf включает другие файлы:
# Пример содержимого /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
# Основные настройки HTTP
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Подключаем все конфиги из conf.d/
include /etc/nginx/conf.d/*.conf;
# Подключаем все активные сайты
include /etc/nginx/sites-enabled/*;
}
Полезные команды для работы с конфигурацией:
# Проверить синтаксис всех конфигов (покажет путь к основному файлу)
sudo nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# Показать, какой именно конфигурационный файл будет использован
sudo nginx -T 2>&1 | head -5
# Перезагрузить конфигурацию без простоя (reload)
sudo nginx -s reload
# Найти все конфигурационные файлы, которые читает Nginx
ps aux | grep nginx | grep -Eo '-c [^ ]+' | cut -d' ' -f2
DevOps-практика:
В инфраструктуре как код (IaC) мы обычно управляем не всем /etc/nginx/nginx.conf, а выносим специфичные для приложения конфиги в отдельные файлы в conf.d/ или sites-available/. Это позволяет:
- Разделять ответственность (базовый образ vs. конфиг приложения).
- Упрощать деплой через замену отдельных файлов.
- Использовать шаблонизацию (Jinja2, Consul Template) для динамической генерации конфигов.