В Nginx конфигурационный файл находится по пути /etc/nginx/nginx.conf в случае если пакет установлен стандартным способом из репозитория, в файле задаются основные параметры работы веб-сервера.
Для Nginx конфигурационный файл /etc/nginx/nginx.conf является основным, в нем подключаются все остальные. Подключение происходит с помощью директивы include и указания путей к файлам с настройками.
Могут указываться полные пути или пути с маской (*) определяющие уровень в иерархии каталогов.
Добавлением нужных директив и подбора их значений выполняется тонкая настройка .
Будем рассматривать настройку веб-севрера Nginx, работающего на сервере под управлением операционной системы Debian.
Nginx конфигурационный файл с контекстами
Основной конфигурационный файл имеет следующую структуру:
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
…
}
В конфигурации три контекста, первый глобальный — server, в нем задаются общие параметры, некоторые из них рассмотрены ниже.
Вторым контекстом является http, в прописываются параметры определяющие обработку http запросов для всего сервера.
Третий контекст — location, это блок с настройками для определенного сайта или раздела сайта.
Разные параметры nginx могут задаваться в каком-то одном контексте, в двух или трех, информация о контексте приводится в описании параметра в документации.
Параметры контекста server
Для приведенного файла запускается веб-сервер от имени пользователя www-data.
Максимальное количество возможных соединений определяется произведением значений worker_processes и worker_connections — каждый воркер может обрабатывать количество соединений, заданное в соответствующей директиве конфигурационного файла (в примере значение worker_connections равно 768, и задано 4 воркера).
Стандартное для веб-серверов правило — устанавливать количество воркеров в соответствии с количеством ядер процессора для nginx не критично, также значение worker_processes можно устанавливать в auto, но эта настройка актуальна не для всех версий Nginx.
Следующая директива важна для снятия ограничений количества возможных соединений — она находится в блоке events и по-умолчанию закомментирована, чтобы активировать директиву достаточно снять знак комментария и перезапустить Nginx
multi_accept on;
Директивы, задающиеся в разделе конфигурационного файла http
Метод отправки информации
sendfile on;
Указание на необходимость отправки заголовков вместе с данными, что позволит ускорить процесс обработки запросов
tcp_nodelay on;
tcp_nopush on;
Самым важным для быстродействия является включение сжатия — производится обычно также в разделе http
gzip on;
gzip_disable "msie6"
;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json application/javascript;
Эффект для достижения хорошей производительности при настройке под веб-приложение дает сжатие css и javascript
При активных директивах будет использоваться GZIP сжатие, что покажет GooglePageSpeedInsights
Логирование подключается директивами в секции http, но может также задаваться и в файлах виртуальных хостов
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
Полностью конфигурационный файл может выглядеть так:
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_names_hash_bucket_size 64;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6"
;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
В последних двух строках подключаются файлы виртуальных хостов, в них задаются правила для контекста location
После внесения любых изменений необходимо проверять конфигурацию
nginx -t
Если ошибок в консоль не вывелось — веб-сервер можно перезапускать
service nginx restart
Nginx хорош тем, что универсален. Он легко масштабируется и может проксировать запросы на несколько бэкендов отслеживая их доступность.
Nginx применяется для почтовых серверов и является универсальным фронтэндом, что позволяет использовать его в распределенных отказоустойчивых системах.