Apache 2.4 反向代理设置不能强加基本身份验证
Posted
技术标签:
【中文标题】Apache 2.4 反向代理设置不能强加基本身份验证【英文标题】:Apache 2.4 reverse proxy setup cannot impose basic authentication 【发布时间】:2021-08-21 23:05:52 【问题描述】:我已经设置了 apache2.4,当访问任何 apache 提供的网站时,基本身份验证效果很好。
现在我在端口 8000 上从其他服务运行了另外一个网络服务器,我想将 apache 设置为反向代理,希望它也可以在那里强加和处理基本身份验证......但改为询问用户和密码它只是为未受保护的网站提供服务。
我的设置是:
<VirtualHost *:8000>
ProxyPreserveHost On
ProxyPass / http://192.168.0.101:8000/
ProxyPassReverse / http://192.168.0.101:8000/
<Location />
AuthType Basic
AuthName "Authorization"
AuthUserFile /etc/htpasswd/.htpasswd
require valid-user
</Location>
</VirtualHost>
我做错了什么?
更新: 通过标记答案找到的解决方案:
<VirtualHost *:8000>
ProxyPreserveHost On
<Location />
ProxyPass http://192.168.0.101:8000/
ProxyPassReverse http://192.168.0.101:8000/
AuthType Basic
AuthName "Authorization"
AuthUserFile /etc/htpasswd/.htpasswd
require valid-user
</Location>
</VirtualHost>
还要确保将 apache 配置为侦听该端口,并且如果代理服务器是本地的,它不会在与侦听的端口相同的端口上运行
【问题讨论】:
【参考方案1】:问题在于 Apache 没有“链接”Proxypass / http://example.com
和 <Location />
- 即使它们都尝试使用 /
。这意味着 Proxypass 将首先处理对“/”的请求,并且永远不会使用 Location
部分。
您需要在Location
中移动代理配置,删除路径,例如:
<VirtualHost *:8000>
ProxyPreserveHost On
<Location />
ProxyPass http://192.168.0.101:8000/
ProxyPassReverse http://192.168.0.101:8000/
AuthType Basic
AuthName "Authorization"
AuthUserFile /etc/htpasswd/.htpasswd
require valid-user
</Location>
</VirtualHost>
【讨论】:
嗨,谢谢您的解决方案,这是正确的答案,从 2 天尝试各种事情开始的错误配置使它看起来不起作用,但我发现了我的错误,现在它工作得很好!再次感谢!以上是关于Apache 2.4 反向代理设置不能强加基本身份验证的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apache 2.4 mod_proxy 和基本身份验证在 Docker 容器中运行 Portainer
具有基本身份验证的 Apache 和 Tomcat 反向代理:Tomcat 可以接收用户名吗?
如何使用基本身份验证保护在 Apache2 虚拟主机中反向代理的 Tomcat webapp?