Image

База знаний → Оптимизация скорости обработки запросов службой nginx

Оптимальные настройки nginx позволяют увеличить скорость обработки запросов. На виртуальном хостинге как правило все настройки уже выполнены специалистами хостинг провайдера. А в случае с размещением сайта на виртуальном сервере все настройки производятся самостоятельно.

Чтобы сайт работал быстрее мы рекомендуем проверить наличие конфигурации, которая позволит работать веб серверу nginx быстрее.

1. Сверим базовые настройки

nano /etc/nginx/nginx.conf

1.1 Опция автоматически определяет количество ядер на виртуальном сервере.

worker_processes auto;

1.2 Настройки сжатия

        gzip on;
        gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 6;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/ xml+rss text/javascript;

1.3 Включим http/2

Добавим в секцию server файла веб хоста http2 после ssl в строке listen. Данную опцию следует добавлять только для https.

server {
    listen 89.xx.77.xx:443 ssl http2;
    listen [2a01:xx:4:x::xx]:443 ssl http2;

1.3.1 Проверим работу HTTP2

nginx -t
service nginx restart
curl -I https://your-domain.tld

Получим вывод следующего содержания:

HTTP/2 200 
server: nginx
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
cache-control: no-cache, private
date: Tue, 26 Mar 2024 10:39:35 GMT

1.4 Настроим максимальное количество соединений

По умолчанию 768, изменим количество на заданное в операционной системе.

1.4.1 Проверим значение

ulimit -n

1024

1.4.2 Установим его в файле настроек nginx

nano /etc/nginx/nginx.conf
events {
	worker_connections 1024;
}

1.5 Настроим размер буфера

По умолчанию nginx имеет размер буфера в одну страницу памяти. Для того чтобы он мог обрабатывать больше запросов из кэша, изменим значения внутри секции Вашего хоста http {}.

nano /etc/nginx/conf.d/domain-tld.conf
http {
...    

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

...
}

1.6 Настроим время ожидания обработки запросов

При высокой нагрузке и малом времени ожидания клиент может получить сообщение с ошибкой, когда веб сервер nginx не получил ответа от php-fpm, в данном случае следует увеличить время ожидания.

Обратите внимание, что увеличение времени ожидания может негативно сказаться в случае флуда или ddos атак, так как это потребует от сервера больших ресурсов.

nano /etc/nginx/conf.d/domain-tld.conf
http {
...    

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

...
}

Теперь Ваш nginx будет обрабатывать запросы с большей скоростью. После внесения всех изменений проверьте файл конфигурации на наличие ошибок и перезапустите службу для применения внесенных изменений.

nginx -t
service nginx restart

Готово.





Нет комментариев