Как оптимизировать конфигурацию Nginx в Ubuntu 16.04–17.10

12 set 2022 2 min di lettura
Как оптимизировать конфигурацию Nginx в Ubuntu 16.04–17.10
Indice dei contenuti

Предпосылки

Следуйте этому руководству, чтобы установить Nginx - MySQL - PHP: Как установить LEMP Nginx MySQL PHP на Ubuntu 16.04-17.10

Рабочие процессы и рабочие соединения

Первые две переменные, которые необходимо оптимизировать, — это рабочие процессы и рабочие связи. Первое, что нужно сделать, это выяснить, сколько ядер доступно на вашем сервере. По умолчанию для worker_processes установлено значение auto.

Из терминала дайте эту команду:

grep processor /proc/cpuinfo | wc -l

Если результат, например, «1», это количество ядер, доступных на вашем сервере.

Команда worker_connections сообщает нам, сколько людей может одновременно обслуживаться Nginx. По умолчанию 768. Мы можем проверить пределы нашего ядра с помощью этой команды:

ulimit -n

Примером результата может быть "1024".

Откроем файл конфигурации Nginx. Из консоли:

sudo nano /etc/nginx/nginx.conf

Давайте найдем следующие строки и обновим их значениями, полученными из предыдущих команд:


worker_processes 1;
 worker_connections 1024;

Буфер

Еще одна важная конфигурация, которую мы можем сделать, касается размера буфера. Если размер буфера слишком мал, Nginx придется писать во временный файл, что приведет к постоянному чтению и записи на диск. Это переменные, которые мы будем изменять:

client_body_buffer_size — управляет размером клиентского буфера, т. е. всеми действиями POST, отправляемыми в Nginx.

client_header_buffer_size: управляет размером заголовка клиента.

client_max_body_size: максимально допустимый размер клиентского запроса. Если максимальный размер превышен, Nginx вернет ошибку «413» или «Request Entity Too Large».

large_client_header_buffers: максимальное количество и размер буферов для больших клиентских заголовков.

Итак, всегда в одном и том же старом файле nginx.conf

Добавьте или измените следующие параметры:


client_body_buffer_size 10K;
 client_header_buffer_size 1k;
 client_max_body_size 8m;
 large_client_header_buffers 2 1k;

Тайм-ауты

Тайм-ауты также могут значительно повысить производительность.

client_body_timeout и client_header_timeout отвечают за то, как долго сервер будет ждать отправки тела клиента или заголовка клиента после запроса. Если ни тело, ни заголовок не отправлены, сервер выдаст ошибку «408» или «Время ожидания запроса истекло».

Keepalive_timeout Nginx закроет клиентские соединения по истечении этого времени.

send_timeout касается времени отклика между двумя операциями чтения; если по истечении этого времени клиент ничего не примет, Nginx закроет соединение.

Затем в том же предыдущем файле nginx.conf

Добавьте или измените следующие параметры:


client_body_timeout 12;
 client_header_timeout 12;
 keepalive_timeout 15;
 send_timeout 10;

Сжатие с помощью Gzip

Gzip помогает уменьшить сетевой трафик Nginx.

Всегда в одном и том же файле nginx.conf

Добавьте или измените следующие параметры:


gzip on;
 gzip_comp_level 2;
 gzip_min_length 1000;
 gzip_proxied expired no-cache no-store private auth;
 gzip_types text/plain application/x-javascript text/xml text/css application/xml;

логирование

Nginx записывает каждый тип запроса к серверу в файл журнала, вы можете отключить его.

В том же файле nginx.conf

Добавьте или измените следующие параметры:


access_log off;

Сохраните и закройте файл.

Чтобы проверить правильность настроек, из консоли:

sudo nginx -t

Кэширование статических файлов

Вы можете установить срок действия кэша для определенных типов файлов.

Откройте и отредактируйте следующий файл:

sudo nano /etc/nginx/sites-available/default

Добавьте следующие строки кода внутрь блока server {...}:


server{...
 location ~*.(jpg|jpeg|png|gif|ico|css|js)$ {
 expires 365d;
 }...
 }

Сохраните и закройте файл.

Чтобы проверить правильность настроек, из консоли:

sudo nginx -t

Если ошибок нет, перезапустите nginx:

sudo service nginx restart

Оптимизация Nginx завершена.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.