Решили написать небольшую статью по настройкам NGINX. Эта статья будет полезна тем, кто, также, как и мы, использует вместо веб-сервера Apache – более быстрый веб-сервер NGINX. В своих проектах мы используем сервера на Ubuntu 16.04, NGINX в связке с PHP-FPM 7.0 и сервером баз данных MariaDB 10.1 (для сайта на WordPress он немного быстрее MySQL 5.7).
Необходимые настройки NGINX для любого сайта
Приводим здесь основные настройки NGINX, которые мы считаем необходимыми для любого сайта. Мы указываем эти настройки в первую очередь, после установки NGINX. Все настройки помещаем в секцию http основного конфигурационного файла nginx.conf
Отключение вывода версии nginx при ответе:
server_tokens off;
Оптимизация отправки файлов и данных:
sendfile on; tcp_nopush on; tcp_nodelay on;
Включаем поддержку Keep-Alive и ограничиваем кол-во соединений:
keepalive_timeout 65; keepalive_requests 100;
Включить сжатие gzip для всех файлов, коэффициент сжатия 6 в данном примере является оптимальным, устанавливать это значение больше не рекомендуется, но вы можете попробовать установить значение от 2 до 5, возможно увеличение производительности, это зависит от характеристик вашего сервера:
gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types * gzip_min_length 10;
Необходимые настройки NGINX для WordPress
Здесь мы приводим несколько необходимых настроек, которые нужны для нормальной и безопасной работы сайта на WordPress.
Правильно настраиваем постоянные ссылки для WordPress:
location / { try_files $uri $uri/ /index.php?q=$uri&$args; }
Запрещаем доступ к скрытым файлам (например .user.ini):
location ~ /\. { deny all; }
Запрещаем доступ к php-файлам в папке uploads:
location ~* /(?:uploads|files)/.*\.php$ { deny all; }
Устанавливаем expire headers для статических ресурсов:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; }
Если вы используете SSL-сертификат и nginx собран с модулем HTTP2, то включаем поддержку HTTP 2.0, протокол HTTP версии 2.0 значительно ускоряет загрузку вашего сайта:
server { listen 443 ssl http2; }
После внесения любых изменений в конфигурационные файлы не забывайте перезагрузить NGINX для вступления этих изменений в силу. Любые вопросы по настройкам задаём в комментариях.
Также, если вы используете NGINX вместе с WordPress, мы рекомендуем вам использовать отличный плагин безопасности, основанный на 5G/6G файрволле – BBQ Pro – The Fastest WordPress Firewall Plugin NULLED.