我在网上找到了这个难题,最后我找到了一个办法。
问题是,只要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