Mod-Rewrite

反向代理登錄頁面

  • May 15, 2017

我正在努力讓我的反向代理按需要工作……我的 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/

任何幫助表示讚賞。提前謝謝了。

嗯.. 您確定要將所有登錄重定向到後端直接提供的純 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了 from mod_alias 而不是RewriteRulefrom mod_proxy,因為對於這種簡單的外部重定向來說已經足夠了,而且可能也更容易理解。

引用自:https://serverfault.com/questions/850142