Я пытаюсь настроить Nagios на NGiNX с помощью PHP-FPM.
Я установил 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
Есть идеи о том, что может вызвать это и / или как это исправить?
Чтобы уточнить Ответ Эрики:
Это говорит «Основной сценарий неизвестен» так как NGiNX делает не поддержка работает CGI прямо. Вспомогательная программа должен быть установлен для обработки CGI файлы и вернуть вывод в NGiNX.
Вот почему я установил fcgiwrap
, который обрабатывает CGI файлы и передает вывод в PHP-FPM, который затем обрабатывается NGiNX, 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 работал, я больше не получал эту ошибку, и Nagios работал.
Ура для мигрени, связанной с туманным мышлением и маленькими глупыми ошибками!
Если в последних версиях ничего не изменилось, Nagios не является приложением на PHP.