我在網上找到了這個難題,最後我找到了一個辦法。
問題是,只要http在內部重定向到ELB上的https端口,它就會被重定向回端口80,從而創建一個循環。發生這種情況是因爲ELB卸載SSL,然後再次連接到端口80。
最後經過一番研究,我得到了正確的重寫規則來管理X-Forwarded-Proto,即使ELB卸載SSL tomcat,現在原始請求使用SSL。
這是在Tomcat 8上使用Tomcat Valves完成的。確保它也可以在早期版本上完成。我已經使用閥門在Tomcat上啓用了重寫規則。之後,它就像在Apache上編寫重定向規則一樣簡單。
步驟如下:
步驟1:
一個。 b。在tomcat conf文件夾下打開context.xml。粘貼以下行略低於
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
注:這將在全球啓用閥。在這種情況下,對於需要特定主機啓用,那麼它應該在裏面server.xml中的粘貼該特定域
第2步:
一個。打開conf/server.xml b。粘貼略高於</Host>
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
步驟3以下行:
一個。打開web.xml所在的文件夾。例如,如果應用程序託管在ROOT和Web下。xml將在webapps下/ ROOT/WEB-INF
b。同樣,如果應用程序託管在webapps/myappfolder下,那麼web.xml將位於webapps/myappfolder/WEB-INF
c。在WEB-INF文件夾中創建一個新文件rewrite.config。並粘貼以下重寫規則:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
非常感謝你..它解決了我的問題.. – 2012-03-30 06:01:44