如何在 Nginx 配置中处理“index.php/somepath”的请求?

如何在 Nginx 配置中处理“index.php/somepath”的请求?

我目前正在尝试从 nginx 提供 Icinga。新的 Icinga-Web ui 尝试从 URL 加载文件http://SERVER/icinga-web/index.php/appkit/squishloader/javascript (导致 404)。如何为这种情况设置位置?如何让 nginx 提供 index.php 并以 Icinga 理解的方式传递完整的请求路径?

这是我当前为 icinga 设置的 nginx 配置(改编自默认的 apache 配置):

server {
        server_name SERVER;

        root /opt/icinga/icinga-1.2.1;

        location /icinga-web/js/ext3 {
                alias /opt/icinga/icinga-1.2.1/lib/ext3;
        }
        location /icinga-web {
                alias /opt/icinga/icinga-1.2.1/pub;
        }
        location /icinga/cgi-bin {
                alias /opt/icinga/icinga-1.2.1/sbin;
        }
        location /icinga {
                alias /opt/icinga/icinga-1.2.1/share;
        }
        location ~ \.php([\?/].*)?$ {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:61000;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

}

有什么想法吗?谢谢!

答案1

检查日志。尝试在路径末尾添加 /。像 index.php/something 这样的 URL 应该可以立即使用(因为它只执行 index.php 文件)。如果这不起作用,请尝试为其创建重写规则。也许这样做也可以解决问题:

location ~ index\.php([\?/].*)?$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:61000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
}

答案2

您需要使用文档根目录设置虚拟主机icinga-web

相关内容