我正在尝试使用 PHP-FPM 在 NGiNX 上设置 Nagios。
我安装了fcgiwrap
,并且能够从cgi-bin
文件夹执行 Perl 脚本,但是当我尝试访问 Nagios 时,NGiNX 错误日志中出现以下错误:
2012/08/23 16:40:21 [error] 8319#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 10.1.1.1, server: my.server.tld, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "my.server.tld"
使用默认位置时我遇到了同样的错误,因此我将所有内容复制到不同的文件夹中,以保持原始安装文件完好无损。
cp -R /usr/lib/cgi-bin/nagios3 /var/www/cgi-bin
cp -R /usr/share/nagios3/htdocs /var/www/html
这是我设定的/etc/nginx/sites-available/default
server {
listen 80;
server_name my.domain.tld;
access_log /var/log/nginx/my.domain.tld.access.log;
error_log /var/log/nginx/my.domain.tld.error.log;
index index.php index.html index.htm;
location / {
root /var/www/html/;
auth_basic "Restricted";
auth_basic_user_file /etc/nagios3/.htpasswd-users;
}
# Pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
# FastCGI Wrapper
location /cgi-bin/ {
gzip off;
root /var/www/;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
这是我在我的/etc/nagios3/cgi.cfg
physical_html_path=/var/www/html
url_html_path=/
以下是我正在运行的 PHP 内容:
PHP 5.3.16-1~dotdeb.0 with Suhosin-Patch (cli) (built: Aug 17 2012 22:03:18)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with the ionCube PHP Loader v4.2.2, Copyright (c) 2002-2012, by ionCube Ltd.
with Suhosin v0.9.33, Copyright (c) 2007-2012, by SektionEins GmbH
对于导致此问题的原因和/或如何解决它,您有什么想法吗?
答案1
澄清ErikA 的回答:
意思是“主要脚本未知”因为NGiNX做不是支持运行电脑生成图像处理直接。辅助程序必须安装以处理电脑生成图像处理文件并将输出返回到NGiNX。
这就是为什么我安装了fcgiwrap
,它可以处理电脑生成图像处理文件并将输出传递给PHP-FPM,然后由NGiNX,据我所知。
尽管我以为自己已经开始了init.d
剧本创作fcgiwrap
,但事实并非如此。
我能够通过运行来确定这一点netstat -alnp | grep cgi
,直到我启动脚本时才返回任何输出;/etc/init.d/fcgiwrap start
启动之后我netstat -alnp | grep cgi
再次运行,得到以下输出:
unix 2 [ ACC ] STREAM LISTENING 18955 11251/fcgiwrap /var/run/fcgiwrap.socket
脚本运行后,电脑生成图像处理正常工作后,我不再收到此错误,并且纳吉奥斯工作了。
哎呀,偏头痛就是由思维混乱和愚蠢的小错误引起的!
答案2
除非最近的版本发生了重大变化,否则 Nagios 不是 php 应用程序。