Я настроил перенаправление, таким образом, я могу служить своим файлам PHP без .php
расширение, но каждый раз, когда я посещаю "чистый" URL, мой браузер, загружает файл, предполагая, что NGINX не размещает его как файл PHP.
Как я могу устранить эту проблему (и дыра в системе безопасности)?
Конфигурация:
server {
listen 80;
server_name www.example.com;
root /var/www/html/public;
location / {
try_files $uri $uri/ @extensionless-php;
index index.html index.htm index.php;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
}
Используя вкладку Chrome Inspector Network, рассмотрите необработанный набор заголовков ответа HTTP для этой конфигурации по сравнению с рабочей страницей PHP. Вы будете видеть эти Content-Type
, отличается между страницами. Это - альтернатива Content-Type
, который вызывает браузер к , отвечают путем загрузки файла вместо того, чтобы отобразить его .
В Вашем @extensionless-php
блок, попытайтесь добавить это для принуждения Content-Type
назад к стандартному HTML тип MIME:
default_type text/html;