Apache 2.4 反向代理设置不能强加基本身份验证

时间:2021-06-03 20:00:48

标签: apache apache2.4

我设置了 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 个答案:

答案 0 :(得分: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>
相关问题