Perl

Apache 2.4 對 CGI 腳本回复“403 Forbidden”,我的配置看起來不錯

  • July 15, 2015

我在 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。如果它仍然不起作用,請在下面添加評論並可能更新您的問題。我再看看,也許建立一個測試系統。

引用自:https://serverfault.com/questions/625406