码迷,mamicode.com
首页 > Web开发 > 详细

https经过ngxin在web服务器收到http请求

时间:2019-04-30 17:22:04      阅读:461      评论:0      收藏:0      [点我收藏+]

标签:tomcat部署   sch   col   forward   转发   ade   文件   部分   gets   

一. 问题描述:

nginx代理nexus的时候页面不全,部分https地址自动转成http了,使用方案四解决的

      浏览器输入https://www.mysite.com,后台通过request.getScheme()获取到的确实http而不是https,通过request.getRequestURL()拿到的也是http://www.mysite.com

分析原因:因为nginx+tomcat部署web服务,tomcat接受到的请求都是来自于nginx的http请求。浏览器请求https是外网域名或者ip,在浏览器发出请求时经过nginx代理拦截会进行证书验证,验证通过后nginx把外网请求转发到内网服务器,一般都是http请求,因为https证书只针对外网ip,内网服务无法配置ssl证书,而且如果转发到web服务器也是https请求,那么每个web服务都需要配置ssl证书。

二. 解决办法:

方案一:修改服务端,支持https请求,nginx的配置改为proxy_pass https://xrk_biz_web2_8013;

方案二:在nginx端强制重定向http到https。

方案三:修改服务端逻辑代码(配置文件中主机访问地址及redirect补全主机地址),保证相关回调链接都是https开头。

方案四:使用spring-boot官方提供的解决方案,nginx添加配置(最终采用):

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto https;

 

https经过ngxin在web服务器收到http请求

标签:tomcat部署   sch   col   forward   转发   ade   文件   部分   gets   

原文地址:https://www.cnblogs.com/charon2/p/10796889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!