Apache 反向代理:在特定 URL 上放置 htaccess 类型的密码

Apache 反向代理:在特定 URL 上放置 htaccess 类型的密码

我有一个 Apache2 反向代理来管理多个域。

在里面我有一个配置如下的 vHost:

<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/

答案1

这比我想象的要简单。我的问题是位置末尾的斜杠,因为它会在浏览器中的 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>

相关内容