Linux
同一虛擬主機上多個目錄中的基本身份驗證
是否可以嵌套基本身份驗證?這樣就可以使用一個基本的身份驗證指令訪問父文件夾和所有子文件夾,但子文件夾具有單獨的身份驗證
虛擬主機配置:
<VirtualHost *:80> ServerName subdomain.domain.com # # Comment # ErrorLog "/var/log/httpd/analytics_prox_error_log" CustomLog "/var/log/httpd/analytics_prox_access_log" common SSLProxyEngine on SSLProxyVerify none ProxyRequests Off <Location /> AuthType Basic AuthName "ProxyMain" AuthUserFile /var/www/analytics-auth/.htpasswd Require user datateam Satisfy any Deny from all Allow from 192.168.0.0/16 10.0.0.0/8 </Location> <Location /folder1/> AuthType Basic AuthName "Proxy" AuthUserFile /var/www/analytics-auth/.htpasswd Require user mainuser folder1user Satisfy any Deny from all Allow from 192.168.0.0/16 10.0.0.0/8 </Location> <Location /anotherfolder/> AuthType Basic AuthName "Proxy" AuthUserFile /var/www/analytics-auth/.htpasswd Require user mainuser anotherfolderuser Satisfy any Deny from all Allow from 192.168.0.0/16 10.0.0.0/8 </Location> ProxyPass / https://1.1.1.1/ ProxyPassReverse / https://1.1.1.1/ </VirtualHost>
提示輸入 / 的基本身份驗證對於所有子文件夾都是相同的,並且可以正常工作。(AuthMain)但是,如果我瀏覽到指定的文件夾(例如 folder1),我將獲得根基本身份驗證,而不是特定於該位置的基本身份驗證
這是由於 Location 中的文件夾周圍缺少引號引起的。在它們周圍添加雙引號為我解決了這個問題。
從指令的文件中
<Location>
,第一個Location
指令也匹配所有其他路徑。由於您使用的是 Apache 2.4,因此您應該能夠對LocationMatch
. 伴隨著一些東西<LocationMatch "^/(?!anotherfolder|folder1)">
應該管用。