Nginx和Nagios通过FastCGI处理程序,403错误

我目前正在从事Web平台的更新工作,并将Apache从Apache切换到Nginx。

所以我必须在做之前testing我们所有的pipe理和内部应用程序。

那么到目前为止,我并没有遇到任何问题,但是如果没有这个问题,它会有点过于简单:D

所以,今天,我使用以下组件安装我的监督平台:

  • 操作系统:Debian挤压6.0.6
  • WebServer:Nginx 1.2.5
  • FastCGI:fcgiwrap 1.0.3-3
  • PhpCGI:php 5.4.11
  • 监督:Nagios 3.4.3

这是我的目录结构:

/usr/local/$APPNAME$/$SUBTREE$ --> Aim for all binaries and libraries outside the OS. /etc/$APPNAME$/$SUBTREE$ --> Directory for all binaries configuration files. /srv/apps/$WEBAPPNAME$/$SUBTREE$/ --> Directory for all HTML/PHP/CGI related files. 

以下这些我有:

 /usr/local/nagios/ all owned by nagios user/group. /usr/local/nginx/ all owned by nginx user/group. /usr/local/fcgiwrap/ all owned by nginx user/group. /usr/local/phpcgi/ all owned by nginx user/group. 

 /etc/nagios/ all owned by nagios user/group. /etc/nginx/ all owned by nginx user/group. 

 /srv/app/nagios/{cgi-bin;stylesheets;etc} all owned by nginx. 

我的PhpCGI Wrapper运行良好,按要求提供PHP页面,因为我已经正确显示了Nagios主页面。

这个问题似乎来自我的FastCGI Wrapper,它不停地发送一个愚蠢的错误,声称它没有被任何DOCUMENT_ROOT或SCRIPT_FILENAME参数调用。

但是,关于我的Nginxconfiguration,一切似乎都没问题。

我发现其他ServerFault问题有关,但FastCGI包装的升级不帮助我。

这是我的NGinxconfiguration:

  1 user nginx nginx; 2 worker_processes 4; 3 pid /var/run/nginx/nginx.pid; 4 error_log /var/log/nginx/error.log; 5 6 events { 7 worker_connections 1024; 8 } 9 10 11 http { 12 include mime.types; 13 default_type application/octet-stream; 14 sendfile on; 15 keepalive_timeout 65; 16 gzip on; 17 18 upstream fcgiwrap { 19 server unix:/var/run/fcgiwrap.socket; 20 } 21 22 23 server { 24 listen 443; 25 server_name nagios.domain.tld; 26 root /srv/apps/nagios; 27 ssl on; 28 ssl_certificate /etc/nginx/security/cert.crt; 29 ssl_certificate_key /etc/nginx/security/cert.key; 30 ssl_session_timeout 5m; 31 ssl_protocols SSLv2 SSLv3 TLSv1; 32 ssl_ciphers HIGH:!aNULL:!MD5; 33 ssl_prefer_server_ciphers on; 34 35 charset utf8; 36 access_log /var/log/nginx/access.log; 37 38 location / { 39 index index.php; 40 auth_basic "Nagios Restricted Access"; 41 auth_basic_user_file /etc/nagios/passwd.users; 42 } 43 44 location ~\.php$ { 45 auth_basic "Nagios Restricted Access"; 46 auth_basic_user_file /etc/nagios/passwd.users; 47 include fastcgi_params; 48 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 49 fastcgi_pass 127.0.0.1:9000; 50 } 51 52 location ~\.cgi$ { 53 auth_basic "Nagios Restricted Access"; 54 auth_basic_user_file /etc/nagios/passwd.users; 55 include fastcgi_params; 56 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 57 fastcgi_param AUTH_USER $remote_user; 58 fastcgi_param REMOTE_USER $remote_user; 59 fastcgi_pass fcgiwrap; 60 } 61 } 62 } 

Fcgiwrap套接字由nginx处理,我的所有权限似乎都不错。

所以,如果你有任何线索或帮助,将不胜感激:D

提前致谢。

看你的fcgiwrap运行为nginx用户/组。 不确定Debian,但在RHEL / CentOS中,Nagios RPM安装脚本通过以下方式将nagios组添加到apache用户:

 /usr/sbin/usermod -a -G nagios apache 

这可以通过validation

 id apache 

这使得Apache可以获得Nagios对象的信息/状态。 你会想给nginx相同的nagios组权限。