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

时间:2014-09-29 09:49:08

标签: 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         fastcgi_params;
}

然而,Ubuntu上的相同位置块似乎导致:

  

[错误] 9#0:* 3重写或内部重定向循环,同时内部重定向到“/api/index.php”

如果我显式调用http://localhost/api/index.php,使用目录引用http://localhost/api或者如果我将一些参数传递给index.php脚本,调用类似于:http://localhost/api/actions/recent,则无论如何。

任何人都可以帮助我理解为什么Ubuntu和OSX会有所不同吗?怎么样绕过这个重写错误?


可以在此处找到OSX和Ubuntu的完整详细信息:

https://gist.github.com/ksnyde/80ac9a64a6cb03927838

1 个答案:

答案 0 :(得分:0)

我最初的假设是OSX和Ubuntu表现不同并没有证明这一点。

对我而言,转折点是对这一错误的起源有了更多了解。虽然错误的文本并没有完全消除,但它基本上表明它已经尝试了 try_files 行中列出的模式中的所有变体。事实上,如果没有找到匹配项,很多人会在这样的行中添加 = 404 以解决更有意义的错误。

一旦我意识到错误实际上是什么意思,它就让我意识到传递给FPM的路径与FPM所期望的目录结构不匹配。愚蠢......然而所有的硬错误通常都有愚蠢的因素。 :)