Nginx. Highload Tuning

Материал из Wiki
Перейти к навигации Перейти к поиску

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;