Как заставить nginx выполнять php-код в html файлах ?

Есть сервер nginx и php5-fpm в качестве fastcgi-бэкенда.
Необходимо настроить эту связку на выполнение php-кода из .html (.htm, .phtml) файлов.

Исходные данные: Debian 8.9 (jessie), nginx 1.13.5, php5-fpm 5.6.30

Необходимо выполнить ряд шагов:

1. nginx должен передавать html-файлы fastcgi-бэкенду. Для этого нужно изменить location, где прописана обработка php-файлов, либо добавить новый location:

Например, файл /etc/nginx/sites-available/mysite.ru.vhost приводим к виду:

        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
...

P.S. Если используется панель хостинга ISPConfig, то файл пула необходимо защитить от изменений иначе панель его перезапишет и наши настройки потеряются, для защиты поставим аттрибут immutable на файл:

chattr +i /etc/php5/fpm/pool.d/web1.conf

На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.


Оставить комментарий

avatar
1000

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Подписаться  
Уведомление о