nginx 子 uri 在另一个根目录上

nginx 子 uri 在另一个根目录上

我被困在一条 nginx 规则上:

我必须在我们的监控服务器上使用 Nginx,它使用 Zabbix。我成功地为 zabbix 配置了 nginx,这样我就可以访问monit.domain.com它将我发送到 zabbix)。

但我无法设置monit.domain.com/dashboard因此它显示的内容/usr/share/dashboard/页面,那也是 php(嗯,只有 index.php 重要,你猜对了,这是我的仪表板)。

这是仪表板特定的 nginx 配置:在 /etc/nginx/sites-enabled/monitoring.conf 内:

server {
    ######## server stuff with /location and ssl certs
    location /dashboard {
        alias /usr/share/dashboard/pages/index.php;
    }
}

按照 nginx 最佳实践,使用 root 是不明智的(而且不起作用,无论如何我都尝试过了)。

编辑:这是我在 Nginx 日志中收到的错误:

[error] 8247#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: XXX.XXX.XXX.XXX, server: monit.domain.com, request: "GET /dashboard/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "monit.domain.com"

谁能建议我去哪里看,谢谢。

答案1

好的,我按照以下配置让它工作了:

server {
    listen 443 ssl;
    server_name monit.domain.com;
    index index.php;
    root /usr/share/zabbix;
    error_log /var/log/nginx/error.log notice;
    ssl on;
    # SSL stuff

    location / {
            root /usr/share/zabbix;
    }

    location /dashboard {
            root /usr/share;
            location ~ \.php$ {
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PHP_VALUE "
                 #many parameters
            ";
            #fastcgi_stuff .....
    }

所以最后,重新定义一个新的根并嵌套一个 php 段来指定它应该被解释。

相关内容