我在这里的一台服务器上运行 Nagios(CentOS 5.3,带有 Apache 2.2.3-22.el5.centos),并向我的 LDAP 服务器进行身份验证,一切运行正常。但是,我希望某个 IP 无需身份验证即可查看 Nagios 状态页面。Nagios 有此选项可以将用户分配给未进行身份验证的人:
authorized_for_read_only=guest
default_user_name=guest
听起来不错,但这并不涉及 Apache 身份验证。我当前的 Apache 配置如下:
<Directory "/usr/lib64/nagios/cgi">
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/nagios/misc/htpasswd.users
Require valid-user
AuthBasicProvider file ldap
AuthzLDAPAuthoritative off
AuthBasicAuthoritative On
AuthLDAPGroupAttribute LDAPmember
AuthLDAPURL (my server stuff)
Require ldap-group CN=nagios,ou=groups,DC=local
</Directory>
这是可行的,但我希望有某种方式来表示“这个 IP 在这里,他可以跳过那个身份验证过程”。Apache满足指令看起来可以工作,所以我尝试了这个:
<Directory "/usr/lib64/nagios/cgi">
AllowOverride None
Order allow,deny
Allow from (IP) <---- changed
Deny from all <---- changed
Satisfy any <---- changed
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/nagios/misc/htpasswd.users
Require valid-user
AuthBasicProvider file ldap
AuthzLDAPAuthoritative off
AuthBasicAuthoritative On
AuthLDAPGroupAttribute LDAPmember
AuthLDAPURL (my server stuff)
Require ldap-group CN=nagios,ou=groups,DC=local
</Directory>
但它并没有改变网站的行为。有什么想法?“对我有用”吗?指向适当的升级说明的指针,说明如果我升级我的服务器,我就可以解决这个问题?:)
---- 更新答案 ----
我删除了文件或 LDAP 内容,一切正常。我可能在那里做错了什么,但无论如何,它现在起作用了。这是我的最终配置:
<Directory "/usr/lib64/nagios/cgi">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from 192.168.42.213
Satisfy any
AuthName "Nagios Access"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthBasicAuthoritative On
AuthLDAPGroupAttribute LDAPmember
AuthLDAPURL (my server stuff)
Require ldap-group CN=nagios,ou=groups,DC=local
</Directory>
答案1
“满足任何”确实是你需要使用的。有一个好例子在 Apache wiki 上。直接引用该来源:
<Directory /home/www/site1/private>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Order allow,deny
Allow from 172.17.10
Satisfy any
</Directory>