没有.php扩展名的nginx php-fpm

前端之家收集整理的这篇文章主要介绍了没有.php扩展名的nginx php-fpm 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在SO上已经出现了几次,但是没有一个解决方案起作用.这是我目前拥有的:

    location / {
            try_files $uri $uri/ $uri.PHP;
    }

    location @PHP {
            default_type application/x-httpd-PHP;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_param QUERY_STRING    $args;
            fastcgi_pass unix:/var/run/PHP5-fpm.sock;
            fastcgi_index index.PHP;
            include fastcgi_params;
    }

    location ~ \.PHP${
            #fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_param QUERY_STRING    $args;
            fastcgi_pass unix:/var/run/PHP5-fpm.sock;
            fastcgi_index index.PHP;
            include fastcgi_params;
    }

本示例包含两个选项.首先,编写第一个节以将URL / foo.PHP和URL / foo推入最终位置节.如果我将第一个节的try_files中的$uri.PHP替换为@PHP,则应将@PHP位置用于URL / foo.

对于@PHP位置,我尝试将SCRIPT_FILENAME设置为:

     fastcgi_param SCRIPT_FILENAME "/usr/share/Nginx/html$uri.PHP";
     fastcgi_param SCRIPT_FILENAME "$request_filename.PHP";

这些都不起作用.

在调试时,没有add_header行为URL / foo发出任何信息. Content-Type始终设置为application / octet-stream,有趣的是,它总是设法发回PHP文件内容(下载了它).

我显然做错了什么,但是我什么都没看到.

最佳答案
叹.我知道如果我问这个,我会解决的.好的,这是解决方案:

    location / {
            try_files $uri $uri/ @PHP;
    }

    location @PHP {
            fastcgi_param SCRIPT_FILENAME "$document_root$uri.PHP";
            fastcgi_param PATH_TRANSLATED "$document_root$uri.PHP";
            fastcgi_param QUERY_STRING    $args;
            fastcgi_pass unix:/var/run/PHP5-fpm.sock;
            fastcgi_index index.PHP;
            include fastcgi_params;
    }

    location ~ \.PHP${
            #fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
            fastcgi_pass unix:/var/run/PHP5-fpm.sock;
            fastcgi_index index.PHP;
            include fastcgi_params;
    }

我在这里缺少的关键是fastcgi_param PATH_TRANSLATED“ $document_root $uri.PHP”;线.在这个问题中,我描述了一个场景,其中所有PHP请求都通过了最后一个节-这将消除对中间节的需要.那没有用,需要@PHP位置.

另外请注意,我切换到$document_root.讨论此问题的许多问题都使用文字文档根目录作为文档根目录,而不是变量.也许它在较早版本的Nginx中不存在(我正在使用1.4.6),但这是一种更好的方法.

原文链接:https://www.f2er.com/nginx/532430.html

猜你在找的Nginx相关文章