我已经在运行 Apache/2.4.6(CentOS)的 CentOS 7 的全新安装中安装了 apcupsd。
我安装了 apcupsd 的 CGI 状态,但是当我尝试从另一个工作站访问该页面时仍然收到错误消息:
Forbidden
You don't have permission to access /apcupsd/upsstats.cgi on this server.
它在 LAN 上的 URL 如下所示:
http://mysite/apcupsd/upsstats.cgi?host=127.0.0.1&temp=F
如果我在服务器上的 Web 浏览器上运行此 URL,它可以正常工作。
所以我认为 Apache 不知道 apcupsd 位于 /var/www/apcupsd,所以我最好去告诉它。
但是,当我查看 /etc/httpd/conf.d 时,我看到有一个 apcupsd.conf,如下所示:
#
# apcupsd configuration file for Apache Web server
#
# files are off the documentroot of Web server
Alias /apcupsd /var/www/apcupsd
<Directory /var/www/apcupsd>
AddHandler cgi-script cgi pl
Options ExecCGI
</Directory>
#
# Allow only local access at default
# Change the ".example.com" to match your domain or modify
# access rights to your needs to enable remote access also.
#
<Directory "/var/www/apcupsd">
DirectoryIndex upsstats.cgi
AllowOverride None
Options ExecCGI Indexes
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
所以我看到那里已经有脚本告诉它 /apcupsd 是 /var/www/apcupsd。
但它不适用于 CGI,因为我收到上述错误消息。
我是否需要执行其他操作才能加载/执行 conf.d 中的此文件?是否需要编辑 /etc/httpd/conf/httpd.conf,如果需要,请说明原因和编辑内容,因为我看到 conf.d 中为 apcupsd.conf 执行了“别名”。看来一切都已准备就绪,应该可以正常工作。
我忽略了什么?
答案1
在大多数情况下,为同一个目录设置两个Directory
部分是个坏主意,因此将它们合并在一起。例如,两个部分都有选项,因此其中一个将始终覆盖另一个,因为它们都以绝对方式设置选项。
检查错误日志。Apache总是当生成 403 Forbidden 消息时,会记录一些内容。如果日志中没有任何内容,则要么您查看了错误的日志,要么您的 CGI 本身生成了 403(实际上还有另一种可能性,但如果您有一个带有RewriteRule
“F”标志的日志,则这是一种极端情况)。
另一条评论,该指令Require local
对我来说看起来无效,那么您真的在使用 Apache v2.4 吗?