lor*_*o-s 0 perl cgi mod-auth apache-2.4
我在 Ubuntu 服务器 14.04 上全新安装的 Apache 2.4 上安装了 CGI 脚本。如果对我来说配置文件没问题,Apache也会继续回复403 Forbidden。CGI 是 Monitorix 前端,一个用 Perl 编写的系统监控工具。
配置文件/etc/apache2/conf-enabled/monitorix.conf是:
Alias /monitorix /var/lib/monitorix/www
ScriptAlias /monitorix-cgi /var/lib/monitorix/www/cgi
<Directory /var/lib/monitorix/www/cgi/>
DirectoryIndex monitorix.cgi
Options ExecCGI
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Allow from all
</IfModule>
</Directory>
Run Code Online (Sandbox Code Playgroud)
在所有文件/var/lib/monitorix/www和/var/lib/monitorix/www/cgi对所有至少读取权限。每次我尝试从 URL 访问时/monitorix,在我的 Apache 日志中我都会看到以下几行:
[Mon Sep 01 06:57:52.995680 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58879] AH01630: client denied by server configuration: /var/lib/monitorix/www
[Mon Sep 01 07:00:10.131166 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58903] AH01630: client denied by server configuration: /var/lib/monitorix/www
[Mon Sep 01 07:00:11.102614 2014] [authz_core:error] [pid 17145] [client x.x.x.x:58903] AH01630: client denied by server configuration: /var/lib/monitorix/www
...
Run Code Online (Sandbox Code Playgroud)
另外,我不知道为什么,当我尝试从URL访问/monitorix-cgi(我从这个想法ScriptAlias指令),我得到200 OK和我能看到的Perl源的/var/lib/monitorix/www/cgi/monitorix.cgi。
前一段时间我在 Debian 上安装了这个工具,我没有问题,/monitorix按预期工作,/monitorix-cgi正确地给了我403 Forbidden而不是显示 Perl 源文件。
更新:此问题已报告给 Monitorix 并可能已修复(#69)
当您在浏览器中访问 /monitorix 时,您正在访问 /var/lib/monitorix/www。您的目录块允许访问 /var/lib/monitorix/www/ cgi,而不是 /var/lib/monitorix/www。将别名更改为:
Alias /monitorix /var/lib/monitorix/www/cgi
Run Code Online (Sandbox Code Playgroud)
或添加一个额外的目录块:
<Directory /var/lib/monitorix/www/>
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order deny,allow
Allow from all
</IfModule>
</Directory>
Run Code Online (Sandbox Code Playgroud)
至于看cgi的来源,大概是mod_cgi的配置。它要么未启用,要么未设置为处理 *.cgi 文件。您可能需要添加:
AddHandler cgi-script .cgi
Run Code Online (Sandbox Code Playgroud)
到您的虚拟主机或目录块。如果这不起作用,请在您的 shell 中尝试此操作:
sudo a2enmod cgi
Run Code Online (Sandbox Code Playgroud)
并按照说明重新加载apache。如果它仍然不起作用,请在下面添加评论并可能更新您的问题。我再看看,也许会建立一个测试系统。
| 归档时间: |
|
| 查看次数: |
10102 次 |
| 最近记录: |