Apache:代理之前的身份验证

Apache: Authentification before proxing

我有一个带有应用程序 运行 的虚拟机。它不支持密码保护。我像 sub.domain.com:6000 一样连接到它(将端口 6000 重定向到 VM 的 80)

所以我喜欢使用 apache 作为具有身份验证的代理。

我的虚拟主机配置:

<VirtualHost *:*>
DocumentRoot /var/www/html/

<Directory "/var/www">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>

ProxyPass "/" "http://127.0.0.1:5000/"
ProxyPassReverse "/" "http://127.0.0.1:5000/"

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

它重定向了我,但没有密码保护。 怎么了?

<Directory> 指令用于包含一组仅适用于指定目录、该目录的子目录以及相应目录中的文件的指令。代理服务器是其中的 none,因此您必须使用 <Location> 指令,它通过 URL:

限制所附指令的范围
<Location />
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Location>