Linux

同一虛擬主機上多個目錄中的基本身份驗證

  • April 14, 2016

是否可以嵌套基本身份驗證?這樣就可以使用一個基本的身份驗證指令訪問父文件夾和所有子文件夾,但子文件夾具有單獨的身份驗證

虛擬主機配置:

<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)">

應該管用。

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