Apache VirtualHost - 每个用户的 ProxyPass

Apache VirtualHost - 每个用户的 ProxyPass

我正在尝试配置 Apache,根据用户的身份验证凭据将用户重定向到不同的路径(使用密码)。我已成功设置代理通行证,这可以将请求重定向到自定义路径,但是现在所有用户都被重定向到同一路径。这是因为<Location />对所有用户使用了相同的指令。当我尝试使用<Location /user123><Location /user456>、.. 时,它按预期工作,但我希望 Apache/根据提供的凭据将位置转发到适当的路径。这可能吗?

答案1

使用 mod_rewrite 查看 apache。我相信您可以做类似以下的事情。remote_user 变量在配置中可供 apache 使用。我相信您可以做类似以下的事情。

RewriteCond "%{REMOTE_USER}"  "!^$"
RewriteRule "^/(.*)"  "/$1/%{REMOTE_USER}" [R]

条件是如果远程用户存在且值不是空字符串,则使用远程 URL 重写 URL。您也可以执行重定向匹配。

RedirectMatch "^/(.*)" "/$1/%{REMOTE_USER}"

以下是我的参考资料。这显示了 mod_rewrite 可用的变量 https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

这显示了 mod_rewrite 实际运行的示例 https://httpd.apache.org/docs/2.4/rewrite/remapping.html

答案2

更仔细地看一下这个问题,因为您正在使用 apache 实例通过 htpasswd 文件进行身份验证。我相信您可以参考 REMOTE_USER 变量。

我相信您可以在 apache 配置中使用类似以下内容。

ProxyPass / http://localhost:8080/%{REMOTE_USER}/
ProxyPassReverse / http://localhost:8080/%{REMOTE_USER}/

相关内容