NGINX для WORDPRESS

Майор

Premium
Premium
Регистрация
04.09.14
Сообщения
2.926
Реакции
2.016
Баллы
113

Основной файл конфигурации


Обычно это /etc/nginx/nginx.conf, но может и располагаться и в другом месте в зависимости от вашего дистрибутива операционной системы и источника пакетов nginx.


Ниже будут перечислены только те директивы, значение которых может непосредственно влиять на работу WordPress. Ваш дистрибутив должен предоставлять файл конфигурации обеспечивающий базовую работу nginx, вам следует только перепроверить его на директивы, перечисленные ниже. Строки в конфигурации начинающиеся с # являются комментариями.
NGINX:
# Секция http управляет глобальными настройками для всех виртуальных серверов (сайтов) на сервере. Некоторые директивы могут быть переопределены в секциях настройки отдельных виртуальных серверов
http {
# Разрешает сжатие HTTP-трафика
gzip on;

# Эта директива устанавливает максимальный размер загружаемого файла, должна быть не менее чем значение директивы настройки PHP max_upload
client_max_body_size 64m;

Настройка PHP обработчика может быть произведена так (как в глобальном контексте http {} так и для каждого сайта в контекстах server {} , настройки должны соответствовать тем, что указаны в настройках директивы listen пула (pool) для php-fpm
NGINX:
upstream php {
# перепроверьте путь к сокету или номер порта TCP и выберите ОДНУ из двух директив
server unix:/tmp/php-fpm.sock;
server 127.0.0.1:9000;
}
Во многих дистрибутивах конфигурации для отдельных сайтов (контекст server{} ) вынесены в папку sites-available, на которые создаются символические ссылки в папке sites-enabled. Конфигурации включенных сайтов загружаются в конце nginx.conf директивой include
[ICODE]include sites-enabled/*;[/ICODE]

Некоторые полезные директивы для конфигурации сайта

NGINX:
server {
# Это адрес сайта
    server_name example.com;
# Путь к папке с файлами сайта (корню)
    root /var/www/example.com;
# Файл индекса сайта.
    index index.php;
# А вот показ индекса файлов в папках без файла-индекса отключим
    autoindex off;
# Журнал доступа может быть записан в отдельный файл с отложенной записью
access_log  /var/log/jinx/www-example.com.log main buffer=2k flush=30s;
# А для некоторых файлов журнал доступа можно и вовсе отключить
location = /favicon.ico {
    log_not_found off;
    access_log off;
}
location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# Закроем доступ к скрытым файлам (начинаются с точки)
location ~ /\. {
    deny all;
}

# Вот так можно закрыть доступ к папке кеша (плагинов)
location ~ ^/wp-content/cache { deny all; }

# Запрет выполнения PHP в папках для загруженных файлов
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}
# А директивы ниже показывают как можно установить заголовки кеширования для статических ресурсов (а также изменить сжатие gzip для некоторых из них)
location ~* ^.+\.(jpg|jpeg|png|ico|gif|swf|webp|srv)$ { expires 3w; gzip off; }
location ~* ^.+\.(css|js)$ { expires 7d; add_header Vary Accept-Encoding; }
location ~* ^.+\.(eot|ttf|woff|woff2)$ { expires 92d; add_header Vary Accept-Encoding; }

# Не забываем добавить обработчик для PHP
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_param  SCRIPT_FILENAME  $root$fastcgi_script_name;
# Должен соответствовать имени, определенному в примере директивы upsteam выше.
fastcgi_pass php;
        }
# Ну и наконец, правила для "красивых постоянных ссылок"
location / { try_files $uri $uri/ /index.php?$args; }
# поближе к закрытию контекста server
}
Обязательно убедитесь в том, что в php.ini установлено значение константы
cgi.fix_pathinfo=0
это предотвратит исполнение иных (без расширения .php) файлов, возможно содержащих PHP код, возможным злоумышленником.
 
Последнее редактирование:
Сверху Снизу