我们正在运行使用HTTP身份验证的旧版Web应用程序。我想让一些用户可以使用这个应用程序,但我不想公开用户名/密码,我不想暴露应用程序运行的服务器。
要解决这个问题,我打算使用mod_proxy。我做了以下配置:
<VirtualHost *:443>
# SSL stuff goes in here
ServerName "proxy.local"
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://admin:password@legacy.local:80/
ProxyPassReverse / http://admin:password@legacy.local:80/
</VirtualHost>
除了仍然要求用户自己键入admin / password的部分之外,这是有效的。 我可以让Apache发送ProxyPassReserve中提供的用户名/密码而不是询问用户吗?我在Apache mod_proxy documentation中找不到答案。
答案 0 :(得分:2)
在传递来自mod_proxy的请求之前,您必须启用mod_headers并设置http Authorization标头。
只需base-64编码admin:password字符串并将RequestHeader指令添加到您的配置中:
RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ="
<VirtualHost *:443>
# SSL stuff goes in here
ServerName "proxy.local"
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://legacy.local:80/
ProxyPassReverse / http://legacy.local:80/
RequestHeader set Authorization: "Basic YWRtaW46cGFzc3dvcmQ="
</VirtualHost>