在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),但这是一种更好的方法.

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。