转: Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持

  • 来源:本站
  • 发布时间:2019-08-13
  • 177已阅读
您现在的位置:首页 >> 现代文学 >> 文章
简介 from:http:///vfush/article/details/51086274最近做了个Web项目,架构上使用了Nginx+tomcat集群,且全站HTTPS,用nginx做负载,ng

	转: Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持

from:http:///vfush/article/details/51086274最近做了个Web项目,架构上使用了Nginx+tomcat集群,且全站HTTPS,用nginx做负载,nginx和tomcat使用内网http通信,遇到httpcss,js静态资源被浏览器拦截问题,网上搜索到的很多文章在描述Nginx+Tomcat启用HTTPS支持的时候,都必须在Nginx和Tomcat两边同时配置SSL支持,今天做个总结。 遇到问题nginx强制使用https访问(http跳转到https)http的js,css等静态资源被浏览器拦截(http不被信任)最后的解决方案首先解决第一个问题全站https三种方式,跟大家共享一下nginx的rewrite方法server{:80;server_;rewrite^(.*)$https://$host$1permanent;}nginx的497状态码,我选择了这种方式server{:443;#ssl端口:80;#用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口server_;#为一个server{......}开启ssl支持sslon;#指定PEM格式的证书文件ssl_certificate/etc/nginx/;#指定PEM格式的私钥文件ssl_certificate_key/etc/nginx/;#让http请求重定向到https请求error_page497https://$host$uri$args;}刷新网页htmlmetahttp-equiv="refresh"content="0;url=https:///"/html当http访问到时候自动跳转到https接下来解决第二个问题如果tomcat和nginx双方没有配置X-Forwarded-Prototomcat就不能正确区分实际用户是http还是https,导致tomcat里配置的静态资源被认为是http而被浏览器拦截,()总是http,而不是实际的http或https分别配置一下Nginx和Tomcat,果然好了。 配置Nginx的转发选项:proxy_set_headerHost;proxy_set_headerX;proxy_set_headerX;proxy_set_headerX;1234配置的Engine模块下配置一个Valve:====/1234非80端口配置Nginx增加以下配置proxy_set_headerHost$host:$server_port;非80端口,用80端口时不需要$server_portproxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerX-Forwarded-Proto$scheme;配置Enginename="Catalina"defaultHost="localhost"ValveclassName=""remoteIpHeader="X-Forwarded-For"protocolHeader="X-Forwarded-Proto"protocolHeaderHttpsValue="https"httpsServerPort="7001"/非80端口时,必须增加httpsServerPort配置,不然()方法返回443./Engine关于RemoteIpValve,可以阅读下docpostedon2017-10-1211:02阅读(245)所属分类:。