Apache-2.2
Apache 基本身份驗證 - 某些文件不需要身份驗證
我正在嘗試允許未經身份驗證訪問 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”的方法。:(
您是否嘗試創建一個帶有指向“打開”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>
我沒有嘗試過這是否正常工作,因為
ProxyPassReverseMatch
apache 中沒有指令。