Reverse-Proxy

Apache 反向代理:在特定 URL 上放置 htaccess 類型密碼

  • September 8, 2020

我有一個管理多個域的 Apache2 反向代理。

在裡面我有一個這樣配置的虛擬主機:

<VirtualHost *:443>
       RewriteEngine On
       ServerName www.example.com
       DocumentRoot /var/lib/letsencrypt/http_challenges
       ProxyPass / http://10.55.0.180/plugin/main/
       ProxyPassReverse / http://10.55.0.180/plugin/main/
       ProxyRequests Off
       ProxyPreserveHost On
       <Directory /var/lib/letsencrypt/http_challenges>
           Allow from All
       </Directory>
       <Location /Cours/index.php/Stats/>
                 AuthType Basic
                 AuthName "Wrapper auth"
                 AuthBasicProvider file
                 AuthUserFile "/etc/.htpasswd"
                 Require valid-user
       </Location> 

這樣做的目的是訪問的使用者https://www.example.com可以在不提示輸入密碼的情況下執行此操作,而訪問的https://www.example.com/Cours/index.php/Stats/使用者在未經過身份驗證的情況下無法執行此操作。

當然,如果我在那裡,這種方法是行不通的。

/etc/.htpasswd文件存在且配置良好,但人們https://www.example.com/Cours/index.php/Stats/無需輸入密碼即可訪問。

這比我想像的要容易。我的問題是位置末尾的斜杠,因為它會在瀏覽器中 URL 的末尾自動刪除。所以這是工作配置:

<VirtualHost *:443>
       RewriteEngine On
       ServerName www.example.com
       DocumentRoot /var/lib/letsencrypt/http_challenges
       ProxyPass / http://10.55.0.180/plugin/main/
       ProxyPassReverse / http://10.55.0.180/plugin/main/
       ProxyRequests Off
       ProxyPreserveHost On
       <Directory /var/lib/letsencrypt/http_challenges>
           Allow from All
       </Directory>
       <Location /Cours/index.php/Stats>
                 AuthType Basic
                 AuthName "Wrapper auth"
                 AuthBasicProvider file
                 AuthUserFile "/etc/.htpasswd"
                 Require valid-user
       </Location>

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