Nginx. Highload Tuning
Перейти к навигации
Перейти к поиску
Links
https://server-gu.ru/nginx-tuning/
Example config and its description
- Конфигурация
nano /etc/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
multi_accept on;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
# common configs
include /etc/nginx/conf.d/*.conf;
# backend configs
include /etc/nginx/backend.d/*.conf;
}
- Для приведенного файла запускается веб-сервер от имени пользователя nginx.
user nginx;
- Максимальное количество возможных соединений определяется произведением значений worker_processes и worker_connections — каждый воркер может обрабатывать количество соединений, заданное в соответствующей директиве конфига (в примере значение worker_connections равно 768, и задано 4 воркера). Стандартное для веб-серверов правило — устанавливать количество воркеров в соответствии с количеством ядер процессора для nginx не критично, также значение worker_processes можно устанавливать в auto, но эта настройка актуальна не для всех версий Nginx.
worker_processes
worker_connections
- Следующая директива важна для снятия ограничений количества возможных соединений — она находится в блоке 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;
- Логирование подключается директивами в секции http, но может также задаваться и в файлах виртуальных хостов
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;