PHP-FPM을 사용하여 NGiNX에서 Nagios를 설정하려고 합니다.
설치했고 폴더 fcgiwrap
에서 Perl 스크립트를 실행할 수 있지만 cgi-bin
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의 답변:
그것은 말하고있다"기본 스크립트를 알 수 없음"왜냐하면엔지엔엑스하다~ 아니다달리기를 지원하다CGI곧장. 도우미 프로그램~ 해야 하다처리하기 위해 설치됩니다.CGI파일을 저장하고 출력을 다음으로 반환합니다.엔지엔엑스.
이것이 내가 설치한 이유입니다 fcgiwrap
.CGI파일을 저장하고 출력을 다음으로 전달합니다.PHP-FPM, 그런 다음 다음에 의해 처리됩니다.엔지엔엑스,AFAIUI.
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
스크립트가 실행되고 나면CGI작업 중이었는데 더 이상 이 오류가 발생하지 않았습니다.나기오스일했다.
흐릿한 사고와 어리석은 작은 실수로 인해 발생하는 편두통이군요!
답변2
최신 버전에서 뭔가 급격한 변화가 있지 않는 한 Nagios는 PHP 애플리케이션이 아닙니다.