Nginx — один из самых популярных веб-серверов для размещения сайтов на WordPress. Благодаря высокой производительности, эффективной обработке большого количества одновременных подключений и низкому потреблению ресурсов он широко используется как на небольших VPS, так и на крупных высоконагруженных проектах. В отличие от Apache, Nginx не использует файл .htaccess. Все правила обработки запросов, перенаправления, кеширования и безопасности задаются непосредственно в конфигурационных файлах сервера. Это обеспечивает более высокую скорость работы, но требует правильной настройки. В этой статье подробно рассмотрим установку WordPress на Nginx, настройку виртуального хоста, постоянных ссылок, SSL, PHP-FPM, FastCGI Cache, защиту сайта и оптимизацию производительности.

Преимущества использования Nginx для WordPress

  • высокая производительность;
  • низкое потребление оперативной памяти;
  • быстрая обработка статических файлов;
  • простая интеграция с PHP-FPM;
  • эффективная работа под высокой нагрузкой;
  • возможность использования FastCGI Cache;
  • гибкая настройка безопасности.

Минимальные требования

  • Nginx 1.20 или новее;
  • PHP 8.1–8.4;
  • PHP-FPM;
  • MySQL 8 или MariaDB 10.6+;
  • SSL-сертификат;
  • WordPress последней версии.

Структура сайта

/var/www/example.com/
├── wp-admin
├── wp-content
├── wp-includes
├── index.php
└── wp-config.php

Базовая конфигурация Nginx

WordPress на Nginx Пример файла виртуального хоста:
server {

    listen 80;

    server_name example.com www.example.com;

    root /var/www/example.com;

    index index.php index.html;

    location / {

        try_files $uri $uri/ /index.php?$args;

    }

    location ~ \.php$ {

        include fastcgi_params;

        fastcgi_pass unix:/run/php/php8.3-fpm.sock;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    }

}
Директива try_files необходима для корректной работы постоянных ссылок WordPress.

Настройка HTTPS

После установки SSL рекомендуется использовать отдельный блок сервера:
server {

    listen 443 ssl http2;

    server_name example.com;

    ssl_certificate /etc/ssl/example.crt;

    ssl_certificate_key /etc/ssl/example.key;

    root /var/www/example.com;

}

Перенаправление HTTP на HTTPS

server {

    listen 80;

    server_name example.com;

    return 301 https://$host$request_uri;

}

Настройка WordPress

В файле wp-config.php можно явно указать адрес сайта:
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');

Настройка постоянных ссылок

После изменения структуры ссылок в панели администратора убедитесь, что используется правило:
location / {

    try_files $uri $uri/ /index.php?$args;

}
В отличие от Apache, никаких изменений в .htaccess выполнять не требуется.

Настройка PHP-FPM

Пример обработки PHP:
location ~ \.php$ {

    include fastcgi_params;

    fastcgi_pass unix:/run/php/php8.3-fpm.sock;

    fastcgi_index index.php;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

Защита служебных файлов

Запрет доступа к файлу wp-config.php:
location = /wp-config.php {

    deny all;

}
Запрет доступа к скрытым файлам:
location ~ /\. {

    deny all;

}

Запрет выполнения PHP в папке uploads

location ~* /wp-content/uploads/.*\.php$ {

    deny all;

}
Это снижает риск выполнения вредоносных файлов, загруженных злоумышленниками.

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

location ~* \.(css|js|jpg|jpeg|png|gif|svg|ico|woff2?)$ {

    expires 30d;

    access_log off;

}
Браузер будет использовать локальный кеш, что уменьшит количество запросов к серверу.

Использование FastCGI Cache

Для повышения производительности можно использовать FastCGI Cache. Пример:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
Подключение кеша:
fastcgi_cache WORDPRESS;

fastcgi_cache_valid 200 60m;

Увеличение размера загружаемых файлов

Если необходимо разрешить загрузку крупных файлов:
client_max_body_size 128M;

Оптимизация Gzip

gzip on;

gzip_types

text/plain
text/css
application/javascript
application/json
application/xml;
Сжатие уменьшает объем передаваемых данных и ускоряет загрузку страниц.

Проверка конфигурации

После внесения изменений выполните:
nginx -t
Если ошибок нет:
systemctl reload nginx

Типичные ошибки

  • неверно указан путь к PHP-FPM;
  • отсутствует директива try_files;
  • не настроен SSL;
  • неверные права доступа к файлам;
  • неправильный путь root;
  • не выполнена проверка конфигурации перед перезапуском.

Рекомендации по безопасности

  • Используйте только актуальные версии Nginx и PHP.
  • Регулярно обновляйте WordPress, темы и плагины.
  • Запретите выполнение PHP в каталоге uploads.
  • Отключите отображение версии Nginx.
  • Настройте автоматическое обновление SSL-сертификатов.
  • Используйте Fail2Ban или аналогичные инструменты защиты.
  • Регулярно создавайте резервные копии сайта и базы данных.

Часто задаваемые вопросы

Почему WordPress не использует файл .htaccess?

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

Нужно ли использовать PHP-FPM?

Да. PHP-FPM является рекомендуемым способом обработки PHP-скриптов при работе с Nginx и обеспечивает высокую производительность.

Что делать, если не работают постоянные ссылки?

Проверьте наличие директивы try_files $uri $uri/ /index.php?$args; в блоке location /, затем пересохраните настройки постоянных ссылок в панели администратора WordPress.

Стоит ли использовать FastCGI Cache?

Да. Для большинства сайтов FastCGI Cache значительно снижает нагрузку на сервер и ускоряет генерацию страниц, особенно при высокой посещаемости. Nginx отлично подходит для размещения WordPress благодаря высокой скорости работы, эффективному использованию ресурсов и гибким возможностям настройки. Правильная конфигурация виртуального хоста, PHP-FPM, HTTPS, постоянных ссылок, кеширования и механизмов безопасности обеспечивает стабильную работу сайта, высокую производительность и надежную защиту. Регулярное обновление программного обеспечения, контроль конфигурации и мониторинг сервера помогут поддерживать WordPress в оптимальном состоянии даже при значительной нагрузке.