反向代理到登录页面

反向代理到登录页面

我正在努力使我的反向代理按预期工作……我的 Apache 实例应作为后端应用程序服务器的反向代理工作,如下面的 proxypass/proxyreverse 指令中指定的那样。期望的行为是:客户端请求https://my_website/context_path。此请求应重定向到http://my_backend/context_path/loginServlet 所有其他请求都应反向代理到后端服务器。

   RewriteEngine  on

    RewriteCond  "%{REQUEST_URI}"  "https://my_website/context_path"
    RewriteRule ^/my_website$   http://my_backend/context_path/loginServlet$1

    ProxyPass /my_website/ http://my_backend/context_path/
    ProxyPassReverse /my_website/  http://my_backend/context_path/

任何帮助都值得感激。提前致谢。

答案1

嗯...你确定要将所有登录重定向到后端直接提供的纯 HTTP 页面吗?你的后端服务器可以从外部访问吗?如果可以,那么可以:

<VirtualHost *:443>
  ServerName my_website.example.com
  ...

  RedirectMatch "^/context_path$" "http://my_backend.example.com/context_path/loginServlet"

  ProxyPass /context_path/ http://my_backend.example.com/context_path/
  ProxyPassReverse /context_path/  http://my_backend.example.com/context_path/
</VirtualHost>

但我认为您实际上正在尝试实现这一点;重定向到您的代理而不是后端:

<VirtualHost *:443>
  ServerName my_website.example.com
  ...

  RedirectMatch "^/context_path$" "/context_path/loginServlet"

  ProxyPass /context_path/ http://my_backend.example.com/context_path/
  ProxyPassReverse /context_path/  http://my_backend.example.com/context_path/
</VirtualHost>

请注意我使用了RedirectMatch来自 mod_alias 而不是RewriteRulemod_proxy,因为它对于这种简单的外部重定向已经足够,并且可能更容易理解。

相关内容