Lumen + nginx = 错误 500,重写或内部重定向循环,同时内部重定向到“/index.php”

Posted

技术标签:

【中文标题】Lumen + nginx = 错误 500,重写或内部重定向循环,同时内部重定向到“/index.php”【英文标题】:Lumen + nginx = error 500, rewrite or internal redirection cycle while internally redirecting to "/index.php" 【发布时间】:2015-06-21 03:27:08 【问题描述】:

我正在尝试设置 Lumen - 建立在 Laravel 组件之上的“微框架”。在服务器端有 nginx + php-fpm。

这是我的 nginx 配置:

server 
    server_name lumen.dev;
    root /var/www/lumen;

    location / 
        include         /etc/nginx/fastcgi_params;
        fastcgi_pass    127.0.0.1:9000;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_NAME      /index.php;
        fastcgi_param   SCRIPT_FILENAME  /var/www/lumen/public/index.php;

        try_files $uri $uri/ /index.php?$query_string;
    

当我调用定义的路由时,此配置工作正常,例如我看到“流明”。打开http://lumen.dev 时的响应。但是当我尝试打开像 http://lumen.dev/404 这样的未定义路由时,我在浏览器中看到“500 Internal Server Error”,并且在 nginx 错误日志中看到这条消息:

重写或内部重定向循环,同时内部重定向到“/index.php”,客户端:127.0.0.1,服务器:lumen.dev

如何修复我的 nginx 配置以使其正常工作?

【问题讨论】:

耶,第一个流明问题! :) 我很确定您需要将 root 设置为 /var/www/lumen/public @lukasgeiter 该死的,我怎么能错过呢? :) 请将您的评论分开回答,以便我接受。谢谢! 【参考方案1】:

root 选项必须指向公共目录:

server 
    server_name lumen.dev;
    root /var/www/lumen/public;

出现错误是因为它试图调用与根相关的/index.php?$query_string。所以它试图在一个无限循环中找到/var/www/lumen/index.php

【讨论】:

嗨。以及如何在网络服务器上在线做同样的事情?在根目录中使用 .htaccess ? @zlen 这取决于服务器和您的主机。对于 apache,您将使用虚拟主机配置

以上是关于Lumen + nginx = 错误 500,重写或内部重定向循环,同时内部重定向到“/index.php”的主要内容,如果未能解决你的问题,请参考以下文章

lumen+nginx+405 not allow +跨域

Nginx URL重写规则配置详解

Nginx rewrite 重写功能和Nginx的正则表达式

301 重写/重定向规则导致 500 内部服务器错误

HTTP 错误 500.52 - Docker 上的 URL 重写模块错误

Lumen 应用程序使用 Nginx 服务器处理斜杠