如果path是在conf.d中定义的,ScriptAlias是否需要在Apache 2中?

我已经在运行Apache / 2.4.6(CentOS)的CentOS 7的全新安装中安装apcupsd。

我为apcupsd安装了CGI状态,但在尝试从另一个工作站访问页面时,我仍然收到错误消息:

Forbidden You don't have permission to access /apcupsd/upsstats.cgi on this server. 

它在局域网上的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是否需要编辑,如果是的话,为什么和什么,因为我看到“别名”是在ap.dps ap.cps中完成。 似乎这是一切就位,它应该工作。

我忽略了什么?

对于完全相同的目录有两个Directory部分在大多数情况下是一个坏主意,所以将它们合并在一起。 例如,你在两个选项中,所以总是会覆盖另一个,因为它们都以绝对方式设置选项。

检查错误日志。 当Apache生成403 Forbidden消息时,它总是logging一些东西。 如果日志中没有任何东西,那么要么是在错误的日志中查看,要么是CGI生成403本身(实际上有另一种可能性,但是这是一个边缘情况,如果你有一个带有'F'标志的RewriteRule )。

另一个评论,指令Require local对我来说看起来不正确,那么你真的使用Apache v2.4吗?