Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持
2019独角兽企业重金招聘Python工程师标准>>>
Nginx SSL+tomcat集群 Nginx tomcat no 不用https
最近做了个Web项目, 架构上使用了 Nginx +tomcat 集群, 且全站HTTPS,用nginx 做负载,nginx和tomcat 使用内网http通信,遇到http css,js静态资源被浏览器拦截问题,网上搜索到的很多文章在描述 Nginx + Tomcat 启用 HTTPS 支持的时候,都必须在 Nginx 和 Tomcat 两边同时配置 SSL 支持,今天做个总结。
遇到问题
- nginx强制使用https访问(http跳转到https)
- http的js,css 等静态资源被浏览器拦截(http不被信任)
最后的解决方案
首先解决第一个问题全站https
参考
三种方式,跟大家共享一下
nginx的rewrite方法
server {
listen 192.168.1.111:80;
server_name test.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
nginx的497状态码,我选择了这种方式
server { listen 192.168.1.11:443; #ssl端口 listen 192.168.1.11:80; #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口 server_name test.com; #为一个server{......}开启ssl支持 ssl on; #指定PEM格式的证书文件 ssl_certificate /etc/nginx/test.pem; #指定PEM格式的私钥文件 ssl_certificate_key /etc/nginx/test.key; #让http请求重定向到https请求 error_page 497 https://$host$uri?$args;
}
index.html刷新网页
<html>
<meta http-equiv="refresh" content="0;url=https://test.com/">
</html>
当http访问到index.html时候自动跳转到https
接下来解决第二个问题
如果tomcat 和nginx 双方没有配置X-Forwarded-Proto tomcat就不能正确区分实际用户是http 还是https,导致tomcat 里配置的静态资源被认为是http而被浏览器拦截,request.getScheme()总是 http,而不是实际的http或https
分别配置一下 Nginx 和 Tomcat ,果然好了。
配置 Nginx 的转发选项:
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
配置Tomcat server.xml 的 Engine 模块下配置一个 Valve:
<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>
非80端口配置
Nginx增加以下配置
proxy_set_header Host $host:$server_port; 非80端口 ,用80端口时 不需要$server_port
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Tomcat server.xml配置
<Engine name="Catalina" defaultHost="localhost">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https" httpsServerPort="7001"/> 非80端口时,必须增加httpsServerPort配置,不然request.getServerPort()方法返回 443.
</Engine>
关于 RemoteIpValve,可以阅读下 doc
http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html
转载于:https://my.oschina.net/Silver2014/blog/680177
Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持相关推荐
- Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置
Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置 ============================== ©Copyright 蕃薯耀 2017 ...
- OpenSSL 把cer证书链以及key文件生成keystore,tomcat https配置
最近接触的项目中用到HTTPS,并且申请了证书以及私钥,这一块接触的少 先整理出来,谨防以后忘记.因为是tomcat中配置的https,需要将证书转成keystore文件,通过openssl 先通过证 ...
- Nginx之https配置
14.1. 对称加密 安全隐患:钥匙除我之外,还有多个人拥有.泄露风险较大,钥匙传递的过程风险较大 14.2. 非对称加密 优缺点:私钥很安全.但是非对称算法开销很大,大批量应用于业务,会导致性能成本 ...
- nginx开启https配置
最近再做小程序项目上线官方强制要求使用https,这里记录一下nginx下https的部署使用:如果有钱的话可以购买证书这里使用的是免费的 什么是https参考:https://jingyan.bai ...
- nginx的https配置及nginx端口转发ssl服务端口
server在http配置内容如下: server {listen 443 ssl; #监听端口,Nginx1.5后推荐使用server_name www.test.top; #请求域名 ssl_ce ...
- tomcat https 配置
以前基本上笔者对于安全性考虑的并不多,最近因为saas平台要开始逐渐推广,所以需要开始逐渐加强xss/crsf/https等措施以避免潜在的安全性风险.本文简单的记录下tomcat下https的配置. ...
- Keytool生成数字证书 + Tomcat https 配置
参考:http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html https://baike.baidu.com/item/ht ...
- jdk tomcat mysql配置_Linux jdk、tomcat、mysql配置
Linux jdk配置 2. 使用终端,在/usr下创建java文件夹,将下载的jdk压缩包传上,解压文件 mv 源路径/源文件名 目标路径/目标文件名,进入/usr/java目录,解压文件,tar ...
- Nginx的Https配置及代理api接口配置
文章介绍nginx如何配置https并配置代理java接口 1.获取证书 使用certbot生成证书:如何生成证书? (1)将cert.pem复制到该工具进行解析 进入工具网站转换pem (2)解析完 ...
最新文章
- 手把手教你看懂并理解Arduino PID控制库——调参改变
- 一道简单的面试题:竟然有90%的程序员不能把这个算法完全写正确。。。
- 职工信息管理软件c语言大一,职工信息管理(C语言
- 留言板asp mysql_ASP简单入门(制作一个简单的留言板 )
- 本周五丨数据库智能管控最佳实践与探索
- ASP.NET MVC3 Action Filters详解(一)
- html text align属性,CSS中的text-align属性怎么用
- OS X 使用技巧——在Finder窗口标题栏上显示路径
- pywifi 破解WiFi密码
- 系泊系统悬链线matlab,孙传耀, 汤鸣晓. 基于MATLAB的系泊系统的设计及其动力分析[J]. 电子技术与软件工程, 2017(6): 62-63....
- 基于Matlab的极限学习机(ELM)实现
- 小波包分解、重构 matlab代码
- python端口绑定错误怎么解决,python的 port binding error 请问怎么解决
- Struts功能详解——ActionForm
- 手机屏幕上的战争 三星领先苹果半步
- 分区助手扩大c盘后自动修复_分区助手扩大c盘的详细操作步骤
- 计算机进入启动死循环,Win10开机死循环重启解决方法
- 计算机系统最重要的是什么,操作系统最重要的两个作用是什么
- background简写属性
- 锐龙r77700参数 r7 7700功耗 r7 7700核显性能