使用NGINX进行重写或内部重定向循环

使用NGINX进行重写或内部重定向循环,nginx,Nginx,我有一个PHP API,它脱离URL路径/API,在OSX上,以下配置工作正常: location /api { try_files $uri /api/index.php$is_args$args; fastcgi_pass PHP:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include

我有一个PHP API,它脱离URL路径/API,在OSX上,以下配置工作正常:

location /api {
    try_files $uri /api/index.php$is_args$args;
    fastcgi_pass    PHP:9000;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include         fastcgi_params;
}
然而,Ubuntu上的这个位置块似乎会导致:

[错误]90:*3内部重定向到/api/index.php时的重写或内部重定向周期

无论我是否显式调用http://localhost/api/index.php,使用目录引用http://localhost/api 或者,如果我通过如下调用将一些参数传递给index.php脚本:http://localhost/api/actions/recent.

有人能帮我理解为什么Ubuntu和OSX可能不同吗?绕过这个重写错误怎么样

有关OSX和Ubuntu的详细信息,请访问:


我最初认为OSX和Ubuntu的表现不同,但事实证明并非如此

对我来说,转折点是对这个错误的成因有了更多的了解。虽然错误的文本并没有给出确切的信息,但它基本上表明它已经尝试了try_files行中列出的模式的所有变体。事实上,许多人将a=404添加到这样一行的末尾,以便在没有找到匹配项的情况下解决更有意义的错误


一旦我意识到错误实际上在说什么,我就意识到传递给FPM的路径与FPM期望的目录结构不匹配。愚蠢的但是,所有的硬错误通常都有愚蠢的成分

添加了完整配置。OSX是单文件,Ubuntu使用include获得类似的结果。在黑暗中拍摄,因为我看不到真正的问题-你没有定义错误页面,套接字路径指向我在Ubuntu上不期望的位置。我的印象是,错误路径如果没有定义,将直接报告到访问日志中。不是这样吗?请注意插座在一个不寻常的位置。。。哎呀,这是一个剪切粘贴错误。我已经更正,因为Ubuntu连接使用的是TCP套接字,而不是Unix套接字。