我被困在一条 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 段来指定它应该被解释。