Почему мой NGINX загружает файлы?

Я настроил перенаправление, таким образом, я могу служить своим файлам 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;
    }
}
2
задан 13 July 2015 в 07:59

1 ответ

Используя вкладку Chrome Inspector Network, рассмотрите необработанный набор заголовков ответа HTTP для этой конфигурации по сравнению с рабочей страницей PHP. Вы будете видеть эти Content-Type, отличается между страницами. Это - альтернатива Content-Type, который вызывает браузер к , отвечают путем загрузки файла вместо того, чтобы отобразить его .

В Вашем @extensionless-php блок, попытайтесь добавить это для принуждения Content-Type назад к стандартному HTML тип MIME:

 default_type text/html;
0
ответ дан 3 December 2019 в 00:12

Другие вопросы по тегам:

Похожие вопросы: