2014-02-10 24 views
0

我們有一個負載平衡器位於兩臺JBoss AS7服務器的前面。負載均衡器處理SSL握手並強制通過https的所有流量(http請求被重定向到https請求),AS節點沒有證書,負載均衡器和服務器之間的流量未加密,AS節點對於SSL。告訴JBoss AS7在登錄後重定向到HTTPS而不是在HTTPS後面的HTTP load-blancer

當用戶點擊一個受保護的頁面時,AS向他們顯示一個登錄頁面。用戶輸入憑證並提交登錄表單。 AS將用戶登錄並且然後向用戶發送重定向,以將它們發送到期望的頁面。 AS發送的重定向是HTTP重定向。這會被負載均衡器抓取並重定向到HTTPS,但我真的想要避免第二次重定向。我如何告訴AS在登錄後返回HTTPS重定向而不是HTTP?

回答

0

經過多次搜索,我發現發送相對URL重定向時,JBoss AS7會在將響應返回給客戶端之前自動將其轉換爲絕對URL。 JBoss通過內部調用request.getScheme()request.getPort()來確定如何構建絕對URL。這些調用的返回值由standalone.xml文件通過web:1.1子系統下的連接器標記控制。

這是默認連接器附帶在文件standalone.xml:

<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> 

上該標籤的該方案屬性是request.getScheme(的返回值),並即使負載之間的通信平衡器與AS7節點是通過HTTP你可以告訴JBoss的,該方案將追加到絕對URL是HTTPS,你還可以指定代理端口:

<connector name="http" protocol="HTTP/1.1" scheme="https" socket-binding="http" proxy-port="443"/> 

現在,當你告訴了JBoss重定向發送到/some/url.html客戶端收到https://domain-name/some/url.html和一切工程桃色。