Apache反向代理到需要BasicAuth但想要从用户隐藏它的端点,可以使用Apache的mod_proxy和mod_rewrite模块实现。
首先,需要在Apache的配置文件中启用mod_proxy和mod_rewrite模块。可以在httpd.conf文件中添加以下两行代码:
LoadModule proxy_module modules/mod_proxy.so
LoadModule rewrite_module modules/mod_rewrite.so
接下来,在Apache的配置文件中添加以下代码:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/password/file
Require valid-user
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
ProxyPass http://backend-server/path/to/protected/endpoint
ProxyPassReverse http://backend-server/path/to/protected/endpoint
</Location>
在上面的代码中,/path/to/protected/endpoint是需要BasicAuth的端点,/path/to/password/file是存储用户名和密码的文件路径。
RewriteCond和RewriteRule用于将HTTP请求头中的Authorization信息传递给后端服务器。
最后,使用ProxyPass和ProxyPassReverse指令将请求代理到后端服务器。
这样,当用户访问/path/to/protected/endpoint时,就会被要求输入用户名和密码,并且用户输入的用户名和密码会被传递给后端服务器进行验证。同时,用户不需要在URL中看到BasicAuth的用户名和密码。
领取专属 10元无门槛券
手把手带您无忧上云