详解https请求Nginx转发tomcat变成http问题
off999 2025-02-04 15:29 33 浏览 0 评论
概述
分享一个最近处理的nginx转发问题,简单记录下~
一、问题现象
简单架构为nginx做负载均衡,后端用tomcat做容器。浏览器和 Nginx 之间走的 HTTPS 通讯,而 Nginx 到 Tomcat 通过 proxy_pass 走的是普通 HTTP 连接。
通过域名访问可以正常登录,但是发现某个页面会存在异常,保存的时候会一直在加载中,具体原因为saved方法里面redirect重定向的时候变为http请求,当前页面为https协议,但是这个页面发起了一个http的ajax请求,这个是非法的。
F12查看报错:This request has been blocked; the content must be served over HTTPS.
如图:
分析
进一步分析后发现以下三个现象:
1)在排查代码之后并没有发现代码里有任何写死使用http协议的地方,而后又发现另一个应用也出现了这个情况,两个应用使用的框架分别是struts2和spring,这个问题似乎和框架无关。
2)而后发现原先部署在这两个应用之前的反向代理的协议从原来的http改成了https,但是这两个应用的tomcat并没有跟着升级成https而依旧是http。
3)经过进一步跟踪请求发现并不是所有请求都出现异常,而只有redirect的地方出现问题,而redirect的时候并没有使用https协议,而依然是http。
结合上面三个现象推论:
1)这个问题和框架无关
2)是tomcat和反向代理协议不一致造成的
3)问题出在redirect上
三、解决方法
1、Nginx对应server的location添加配置
将referer的请求scheme信息,用来作为当前请求的scheme,如此可以保证所有的请求都是同一个scheme,不会因为redirect而遗漏信息。
proxy_pass http://xxx/xxx/;
#实际调试时是发现之前的proxy_redirect设置成了off,在开启之后才解决nginx https协议转tomcat http协议问题
proxy_redirect http:// https://;
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-FORWARDED-HOST $server_addr;
proxy_set_header X-FORWARDED-PORT $server_port;
#该参数也需要配置,保证所有的请求都是同一个scheme
proxy_set_header X-Forwarded-Proto $scheme; 如上配置,经过nginx反向代理后的HttpServletRequest中header部分就带上了字段X-Forwarded-Proto。
2、Tomcat的配置srever.xml
2.1、 connector里添加
redirectPort="443" proxyPrort="443"2.2、Host里添加
让tomcat在解析请求和做重定向的时候,知道用什么协议。主要的配置在server.xml里面的Engine下,定义一个Value元素。
<Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeaderHttpsValue="https"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto" />
这个配置里面,重点是protocolHeader字段,意思就是说,当protocolHeader字段的值为protocolHeaderHttpsValue的https的时候,认为是安全连接,否则就是http的非安全连接。
后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!
相关推荐
- 豌豆荚下载官方正式版(豌豆荚下载官网下载)
-
豌豆荚从官方渠道获取应用,但并不完全是官方版本。豌豆荚与众多应用开发者合作,为用户提供最新的应用版本和稳定、安全的下载体验。不过,一些应用可能由豌豆荚进行额外的优化或定制,以提高用户体验或满足特定需求...
- adobe flash官方下载(adobe flash player下载官网最新版)
-
您可以从Adobe官网(https://get.adobe.com/flashplayer/)下载AdobeFlashPlayer最新版本,并在您的手机上安装它。明显你是安装错版本了,这个可是分3...
- 58同城app下载安装官方免费下载
-
如果想要下载PC版(下载在电脑上使用),直接在浏览器中搜索就可以找到;如果想要下载手机版APP,最好是在手机自带或者已经下载好的应用商店搜索下载。其实电脑版下载没有什么必要,直接登录官方网站查看就好了...
- 360管家软件下载(360管家软件下载安装)
-
360和电脑管家,都是电脑的一个安全软件,这两种软件用户量和功能其实都差不多的要说哪个好用的话,看你偏向怎么用了,和你得使用习惯了下面我给大家分别说一下这两款软件的优缺点,嗯,首先说电脑管家的优点电脑...
- 红警2共和国之辉下载(红警2共和国之辉下载电脑版)
-
要下载《红警共和国之辉》,首先需要找到可靠的游戏下载平台,比如Steam、Origin、Uplay等。在平台上搜索游戏名称,选择购买和下载。下载过程中要注意网络连接稳定和电脑系统是否满足游戏要求,如需...
- 高德地图车机版官网(高德地图车机版官网入口)
-
手机安装高德地图车机版方法:进入【设置】--【其他设置】--【关于软件】中,选择检测更新。注:只有正式版才可程序内升级。方式二:官网下载安装步骤一:在官网下载公众版V2.0版本。步骤二:将软件拷贝到U...
- 滴滴顺风车(滴滴顺风车客服95528怎么转人工)
-
是滴滴继“滴滴打车”、“滴滴专车”、滴滴企业出行服务后在移动出行领域推出的第四款产品。 顺风车是在21世纪比较流行的词语,是指搭便车、顺路车、拼车的意思。顺风在中国汉语字典里有顺利、和顺之意,也指顺...
- 放置与召唤破解版(放置与召唤破解版无限)
-
放置与召唤辛弃疾很强,辛弃疾文武双全,物理攻击高,技能伤害大,非常强大。辛弃疾,原字坦夫,后改字幼安,号稼轩,山东东路济南府历城县人。南宋豪放派词人,人称“词中之龙”,与苏轼合称“苏辛”,与李清照并称...
- app下载注册(app下载注册d39qdf7)
-
1,电脑注册:打开QQ登录页面,点击立即注册。2,会弹出一个网页,填写上昵称、密码、手机号码等信息后,点击立即注册,即可注册QQ账号。3,手机注册,打开QQ进入登录页面,点击新用户注册。然后会提示输入...
- 第三方视频播放器哪个软件好
-
风雷影音播放器2.1.0.5风雷影音II独创双播放内核,聚合MPlayer和MPC强大优势功能,全面支持高清影片流畅播放,无需安装第三方软件,采用级联式多层过滤解码,全面提升影片兼容播放。能够完美播放...
- nba2k22安卓版下载(nba2k24苹果版下载免费)
-
①可能是下载的版本与手机系统不匹配,系统运行不了,用户无法进行安装和使用。②可能是网络线路方面的原因,用户在对其进行使用过程中,网络数据出现故障等情况。③软件厂商没有对安卓系统进行开发,导致安卓用户不...
- 手机勒索病毒下载(下载木马病毒)
-
下载抖音极速版是没有病毒的,抖音极速版就跟抖音一样,都是刷视频的一种娱乐软件而且两个软件都是一家公司开发的,抖音极速版刷视频还可以赚金币得现金,每天所赚的金币第二天凌晨系统会自动兑换成现金,很多人下载...
- store软件下载(store软件下载最新版)
-
在OPPO手机里应用商城里头搜索appstore都可以一键下载了,大家写下载的软件或者是APP都要在你手机里的应用商城里头下载,这样里头是没有木马和病毒的而且下载的都是正规的软件和APP,而且安装是...
- qq五笔输入法官方下载(qq五笔输入法手机版官方正式版)
-
打开应用安装目录,打开程序文件在里面再设置一下,让qq拼音为首选输入法,记住切换输入法的切换键,再不行的话从新安装一下即可遇到这种问题可以尝试以下几种办法:1、重装输入法并从重启一下电脑。有些输入法...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
