出于安全方面的考虑,有时我们希望对客户端隐藏服务器的域名或IP地址,这时可以利用亚马逊CloudFront服务来实现。
(1)Origins设置页中的Origin Protocol Policy选择“HTTP Only”。
(2)Behavior设置页中的Viewer Protocol Policy选择“HTTPS Only”。
Forward Headers选择“All”。
Forward Cookies选择“All”。
Forward Query Strings选择“Yes”。
其他选项默认。
(3)Tomcat需关闭80到443端口的跳转,即TOMCAT_HOME\conf\server.xml中的
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="443"/>
将“redirectPort="443"”去掉。
(4)应用的 web.xml 文件中的
<security-constraint>
<web-resource-collection>
<web-resource-name>yourapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
将 CONFIDENTIAL 改为 NONE。
这样就可以用类似https://d36iu8eatn52r6.cloudfront.net/api/user的域名访问服务器的API,而不暴露源站的域名或IP地址。