Apache 2.4 反向代理设置无法实施基本身份验证

Apache 2.4 reverse proxy setup cannot impose basic authentication

我设置了 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 配置为侦听该端口,并且如果代理服务器是本地服务器,则它 运行 与侦听的端口不在同一端口

问题是 Apache 没有 'link' 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>