我目前正在更新我的 Web 平台并从 Apache 切换到 Nginx。
因此,在执行此操作之前,我必须测试我们所有的管理和内部应用程序。
嗯,到目前为止,我没有遇到任何问题,但如果没有它,事情就会变得太简单了:D
因此,今天,我使用以下组件安装我的监督平台:
- 操作系统:Debian Squeeze 6.0.6
- Web服务器:Nginx 1.2.5
- 快速CGI: 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 参数进行调用。
但是,就我的 Nginx 配置而言,一切似乎都正常。
我在另一个 ServerFault 问题上发现了一些相关内容,但是 FastCGI 包装器的升级对我没有帮助。
这是我的 NGinx 配置:
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
提前致谢。
答案1
查看以 nginx 用户/组身份运行的 fcgiwrap。不确定 Debian 是否如此,但在 RHEL/CentOS 中,Nagios RPM 安装脚本通过以下方式将 nagios 组添加到 apache 用户:
/usr/sbin/usermod -a -G nagios apache
可以通过以下方式验证
id apache
这允许 Apache 获取 Nagios 对象信息/状态。您需要为 nginx 授予相同的 nagios 组权限。