Apache-2.2

Apache 基本身份驗證 - 某些文件不需要身份驗證

  • October 13, 2010

我正在嘗試允許未經身份驗證訪問 Nagios 安裝中的某些腳本。雖然這個問題不是專門關於 Nagios 也不是關於 CGI 處理的,下面也說明了這一點。

本質上,我想要求對特定目錄中的任何內容進行身份驗證:

http://example.com/nagios/cgi-bin/....

除了 2 個特定路徑:

http://example.com/nagios/cgi-bin/avail.cgi....
http://example.com/nagios/cgi-bin/trends.cgi....

目前,我已將 Apache 設置為要求對http://example.com/nagios/cgi-bin的所有訪問進行身份驗證

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory "/usr/local/nagios/sbin">
 Options ExecCGI
 AllowOverride None
 Order allow,deny
 Allow from all
 AuthName "Nagios Access"
 AuthType Basic
 AuthUserFile /usr/local/nagios/etc/htpasswd.users
 Require valid-user
</Directory>

我不希望將腳本複製到不同的目錄中,因為這是打包軟體,我想盡量減少支持工作 - 我不確定包中的哪些 URL 使用規範路徑。

編輯:

我可以使用 FilesMatch 代替 Direcory 塊嗎?如果是這樣,Apache 正則表達式是基於 PCRE 還是 POSIX?

編輯3:

使用

<FilesMatch "/(cgi-bin\/)(?!trends.cgi)(?!avail.cgi)/"> 

從目錄中的所有 URL 中刪除身份驗證 :(

我還嘗試將avail.cgi 和trends.cgi 腳本複製到不同的目錄中。這似乎可行 - 但表格中沒有填充來自我的 Nagios 配置的任何數據!似乎 Nagios 程式碼中內置了額外的身份驗證層。這也將擊敗“要求任何/允許來自 ip”的方法。:(

雖然MSIE中修改後的行為可能是正確的 wrt rfc 2396,但它讓我非常頭疼!

您是否嘗試創建一個帶有指向“打開”cgi 的符號連結的新文件夾?

如果伺服器上有第二個 IP 地址可用,您可以嘗試在該 IP 地址上執行反向代理,它只轉發這兩個位置並進行 HTTP 身份驗證。

<VirtualHost secondIP:80>
   ProxyPassMatch ^\/nagios\/cgi-bin\/(trends|avail)\.cgi$ "http://127.0.0.1/nagios/cgi-bin/"
   ProxyPassReverse /nagios/cgi-bin/ "http://127.0.0.1/nagios/cgi-bin/"
</VirtualHost>

我沒有嘗試過這是否正常工作,因為ProxyPassReverseMatchapache 中沒有指令。

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