Nginx SSL+tomcat集群,取不到https正确协议
Posted 努力奋斗的喵喵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx SSL+tomcat集群,取不到https正确协议相关的知识,希望对你有一定的参考价值。
最近在做一个项目, 用到企业微信,架构上使用了 nginx +tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,项目使用https协议,但是在调试微信菜单的相关功能时却发现报错,报错信息如下:
经过调试dofilter里面的代码,发现:
浏览器中输入的URL是 https://shaidh.dhwrwi.com/dheu/syuu.do
但是打断点调试request.getRequestURL() 输出来的 一直是 http://shaidh.dhwrwi.com/dheu/syuu.do
查阅了一些资料,找到了解决方案:
解决方法很简单,只需要分别配置一下 Nginx 和 Tomcat 就好了,而不用改程序。
配置 Nginx 的转发选项:
在nginx安装目录的 conf文件夹中找到vhost.conf,
proxy_set_header X-Forwarded-Proto $scheme;
配置Tomcat server.xml 的 Engine 模块下配置一个 Valve:
配置双方的 X-Forwarded-Proto 就是为了正确地识别实际用户发出的协议是 http 还是 https。
此时再查看request.getRequestURL()就会发现输出的是https
以上是关于Nginx SSL+tomcat集群,取不到https正确协议的主要内容,如果未能解决你的问题,请参考以下文章
我用nginx集群tomcat的时候,如果要做ssl,是否只要在nginx上面做就可以了
Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持
SSL 认证之后,request.getScheme()获取不到https的问题记录