Как заставить nginx выполнять php-код в html файлах
Необходимо выполнить ряд шагов:
1. nginx должен передавать html-файлы fastcgi-бэкенду. Для этого нужно изменить location, где прописана обработка php-файлов, либо добавить новый location:
Например, файл /home/torm/conf/web/nginx.conf приводим к виду:
listen XX.XX.XX.XX:80;
server_name mysite.ru;
index index.php index.html index.htm index.phtml;
set
$fastcgipass unix:
/var/lib/php5-fpm/web1
.sock;
location / {
try_files $uri $uri/
/index
.php;
}
location ~ \.(php|htm|html|phtml)$ {
try_files $uri = 404;
include
/etc/nginx/fastcgi_params
;
fastcgi_pass $fastcgipass;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Обратите внимание на location ~ \.(php|htm|html|phtml)$
2. php5-fpm по-умолчанию отказывается обрабатывать файлы оканчивающиеся не на .php
Чтобы это исправить нужно в файле /etc/php5/php-fpm.conf (или же в файле конфигурации вашего пула, если у вас есть деление на пулы) добавить строку security.limit_extensions.
Например в файле пула /etc/php5/fpm/pool.d/web1.conf
[web1]
listen =
/var/lib/php5-fpm/web1
.sock
...
security.limit_extensions = .php .html .htm .phtml
...
Теги: html, nginx, php