Apache 2.4 對 CGI 腳本回复“403 Forbidden”,我的配置看起來不錯
我在 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>
中的所有文件
/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 ...
另外,我不明白為什麼,當我嘗試從 URL 訪問時(我從指令
/monitorix-cgi
中得到了這個想法) ,我得到200 Ok並且我可以看到.ScriptAlias``/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
或添加一個額外的目錄塊:
<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>
至於看cgi的來源,大概是mod_cgi的配置吧。它要麼未啟用,要麼未設置為處理 *.cgi 文件。您可能需要添加:
AddHandler cgi-script .cgi
到您的虛擬主機或目錄塊。如果這不起作用,請在您的 shell 中嘗試此操作:
sudo a2enmod cgi
並按照說明重新載入 apache。如果它仍然不起作用,請在下面添加評論並可能更新您的問題。我再看看,也許建立一個測試系統。