nginx 代理https后,应用redirect https变成http

nginx配置https,tomcat正常http接受nginx转发。
nginx 代理https后,(java代码redirect地址)应用redirect https变成http

情况类似

http://2hei.net/mt/2010/02/request-getscheme-cannt-get-https.html

http://yywudi.info/nginx-https-400-bad-request-solution/

原因分析:

经过nginx代理后用的spring mvc的redirect,

其中: request.getScheme() return http but not https.

浏览器调整的地址变成http

解决办法:http://han.guokai.blog.163.com/blog/static/136718271201211631456811/

在代理模式下,Tomcat 如何识别用户的直接请求(URL、IP、https还是http )?
在透明代理下,如果不做任何配置Tomcat 认为所有的请求都是 Nginx 发出来的,这样会导致如下的错误结果:

request.getScheme() //总是 http,而不是实际的http或https
request.isSecure() //总是false(因为总是http)
request.getRemoteAddr() //总是 nginx 请求的 IP,而不是用户的IP
request.getRequestURL() //总是 nginx 请求的URL 而不是用户实际请求的 URL
response.sendRedirect( 相对url ) //总是重定向到 http 上 (因为认为当前是 http 请求)

如果程序中把这些当实际用户请求做处理就有问题了。解决方法很简单,只需要分别配置一下 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 模块下配置一个 Value:

点个广告:

Original: https://www.cnblogs.com/hanxianlong/p/14975058.html
Author: 是谁啊?
Title: nginx 代理https后,应用redirect https变成http

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543491/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 用spring 创建ComboPooledDataSource和JdbcTemplate对象

    用spring 创建ComboPooledDataSource和JdbcTemplate对象3.1添加ioc相关jar包 java;gutter:true; org.springf…

    Java 2023年6月13日
    065
  • java 导出excel示例(easyExcel)

    1.情景展示 在javaweb项目当中,如何将数据导入excel,并将生成的excel文件返回给前端? 2.具体分析 可通过阿里巴巴的easyExcel来实现。 所需jar包 &l…

    Java 2023年5月29日
    072
  • 回归理性,直面低代码

    摘要:本文主要介绍华为低代码平台应用魔方AppCube的特点和能力,并分享华为公司的低代码应用构建实践和应用。 DTSE Tech Talk(华为云开发者联盟推出的技术公开课) 解…

    Java 2023年6月15日
    085
  • java的同步方法和同步代码块,对象锁,类锁区别

    java;gutter:true; /*<em> * @author admin * @date 2018/1/12 9:48 * 作用在同一个实例对象上讨论 * sy…

    Java 2023年5月29日
    053
  • Java认证授权框架Spring Security介绍

    Spring Security 是一个非常强大的身份验证和授权控制框架。为了满足企业项目的不同需求,它提供了很多定制化开发的解决方案,通过简单的调整配置,就能为我们的应用提供一套可…

    Java 2023年5月29日
    098
  • day05-离线留言和离线文件

    多用户即时通讯系统05 4.编码实现04(拓展) 拓展功能: 实现离线留言,如果某个用户不在线 ,当登陆后,可以接收离线的消息 实现离线发文件,如果某个功能没有在线,当登录后,可以…

    Java 2023年6月15日
    089
  • 多线程笔记(一)

    1. sleep()方法和yield()方法 共同点:让当前线程释放cpu资源,让其他线程来运行 不同点:调用sleep()方法后,线程进入到 TIMED_WAITING状态,等待…

    Java 2023年6月8日
    082
  • Nginx总结(九)Nginx服务器高性能优化的配置–轻松实现10万并发访问量

    前面讲了如何配置Nginx虚拟主机,如何配置服务日志等很多基础的内容,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhon…

    Java 2023年5月30日
    057
  • java SPI思想

    为什么说java spi破坏双亲委派模型? – 大宽宽的回答 – 知乎 Original: https://www.cnblogs.com/myseries…

    Java 2023年5月29日
    067
  • 外卖项目

    项目介绍: 本项目,瑞吉外卖是专门为餐饮企业,餐厅,饭店定制的一款软件产品,包括系统管理,后台和移动端应用两部分,其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的菜品,…

    Java 2023年6月6日
    077
  • springboot各层作用

    搞懂springboot各层作用 总结springboot项目流程 Springboot项目分为以下几个层: controller层:控制层,负责前后端交互,接收前端发送的请求,然…

    Java 2023年6月7日
    062
  • XML解析

    使用dom4j解析xml 通过反射,如果自己能够创建好Vo文件 对应XML文件中的节点 public FaultReportVo readHdrXml(String url) th…

    Java 2023年6月16日
    072
  • 背包

    1.最优子结构性质:最优解包含了其子问题的最优解,不是合并所有子问题的解,而是找最优的一条解线路,选择部分子最优解来达到最终的最优解。2.子问题重叠性质:先计算子问题的解,再由子问…

    Java 2023年6月5日
    067
  • Http原理

    HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。 文本:html,字符串,~ …. 超文本:图片,音乐,视频,定位,地图…&#…

    Java 2023年6月8日
    067
  • Java高并发教程:Reactor反应器模式

    Java高并发教程:Reactor反应器模式 Reactor反应器模式 到目前为止, 高性能网络编程都绕不开反应器模式。很多著名的服务器软件或者中间件都是基于反应器模式实现的,如N…

    Java 2023年5月29日
    053
  • 4.Ribbon简介

    Ribbon概述 Ribbon是基于HTTP和TCP的客户端负载均衡器,它基于Netflix Ribbon实现。通过SpringCloud的封装,可以让我们轻松地将面向服务的RES…

    Java 2023年6月8日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球