如何在Apache中将基本身份验证与反向代理相结合?
我有一个Apache站点,当前配置为使用此配置使用基本auth和htpasswd文件:
<VirtualHost *:80>
# Requires: a2enmod proxy_http
ProxyPass / http://127.0.0.1:8010/
<Location />
AuthType Basic
AuthName "Sensitive"
AuthUserFile /usr/local/myproject/htpasswd
Require valid-user
</Location>
</VirtualHost>
Apache充当在端口:8010
上提供服务的Buildbot服务器的包装器。但是,此应用程序已升级,因此现在需要使用websockets。建议的Apache configuration是:
<VirtualHost *:80>
<Location /ws>
ProxyPass ws://127.0.0.1:8010/ws
ProxyPassReverse ws://127.0.0.1:8010/ws
</Location>
ProxyPass /ws !
ProxyPass / http://127.0.0.1:8010/
ProxyPassReverse / http://127.0.0.1:8010/
</VirtualHost>
但是,这不使用任何身份验证。我尝试重新添加上一个配置中的<Location />
部分,所以我现在有:
<VirtualHost *:80>
<Location />
AuthType Basic
AuthName "Sensitive"
AuthUserFile /usr/local/myproject/htpasswd
Require valid-user
</Location>
<Location /ws>
ProxyPass ws://127.0.0.1:8010/ws
ProxyPassReverse ws://127.0.0.1:8010/ws
</Location>
ProxyPass /ws !
ProxyPass / http://127.0.0.1:8010/
ProxyPassReverse / http://127.0.0.1:8010/
</VirtualHost>
虽然Apache现在正确地提示输入我的用户名+密码,但Buildbot仍未获得经过身份验证的用户名,仍然会为匿名用户呈现。
如何修复此配置以将用户名(我相信REMOTE_USER
标题)传递到反向代理后面的网络应用程序?