Почему мой 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;
    }
}

1 ответ

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

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

 default_type text/html;
Другие вопросы по тегам