Оптимальные настройки 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
Готово.