nginx反代后java的request.getScheme获取不到https的解决办法

这篇具有很好参考价值的文章主要介绍了nginx反代后java的request.getScheme获取不到https的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在实际应用中,经常会用到nginx反向代理应用,这中就会出现一中情况,访问https页面Java 通过request.getScheme()获取不到https协议,或者response.sendRedirect重定向是http,而不是我们想要的https。

问题原因

经过反代后,协议信息没有转发到后端,或者后端没有设置protocolHeader

nginx配置

需要在nginx的配置文件的server段加上proxy_set_header X-Forwarded-Proto $scheme,
nginx的server完整配置如下(仅做参考):

server {
        listen 80;
        server_name www.example.com;
        index    index.html index.htm index.jsp;
        error_log   /var/log/weblogs/error/www.example.com_error.log crit;
        access_log  /var/log/weblogs/access/www.example.com_access.log  access;
        rewrite ^(.*)\;(.*)$ $1 last;
        location / {
            proxy_pass http://127.0.0.1:1088/;
            proxy_redirect off;
            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;
        }

}

Spring Boot解决办法

Spring Boot 应用只需要在application.yml配置文件加上以下配置即可:

server:
  tomcat:
    remoteip:
      protocol-header: "X-Forwarded-Proto"
      remote-ip-header: "X-FORWARDED-FOR"

Tomcat 解决办法

tomcat 有两种方式
方式一:在conf/server.xml的Engine节点中加入一个value,

<Valve className="org.apache.catalina.valves.RemoteIpValve"
       remoteIpHeader="X-forwarded-For"
       protocolHeader="X-Forwarded-Proto"
       ProtocolHeaderHttpsValue="https"/>

如下图:
request.getscheme()获取不到https,Java,项目开发,java,nginx,https

方式二:在conf/server.xml的Connector节点中加一个参数scheme=“https”文章来源地址https://www.toymoban.com/news/detail-529484.html

<Connector port="1088" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" scheme="https" />

到了这里,关于nginx反代后java的request.getScheme获取不到https的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建自己的 new bing网站----nginx反代(群晖,全docker版)

    本篇教程全萌新向,即便新手也可以看懂 (希望大家点个赞)。 演示效果如图。 本篇文章以nginx反代为题带来一次new bing 的反代实践,可以搭建在自己的服务器上自用,使用起来更方便一点。 我们首先感谢 adams549659584大佬贡献的项目。 项目地址: go-proxy-bing bing项目演示(

    2024年02月09日
    浏览(32)
  • java获取request请求头内容

    注意一下 request 和 httpServletRequest 的类型

    2024年02月12日
    浏览(35)
  • java 获取request中json数据

    功能简介:         Java 从 HttpServletRequest 中获取前端传输过来的json数据 效果展示: 请求示例: post: 127.0.0.1:8081/getRequestJson 代码示例: 拓展:  

    2024年02月12日
    浏览(23)
  • 【Java 进阶篇】Java Request 获取请求体数据详解

    在Java Web开发中,获取HTTP请求的请求体数据是一项常见任务。HTTP请求的请求体通常包含了客户端提交的数据,例如表单数据、JSON、XML等。在Java中,可以使用 HttpServletRequest 对象来获取HTTP请求的请求体数据。本文将详细解释如何使用Java获取HTTP请求的请求体数据,并提供示例

    2024年02月03日
    浏览(31)
  • 【Java 进阶篇】Java Request 获取请求参数的通用方式详解

    在Java Web开发中,获取HTTP请求的参数是一项基本任务。请求参数可以包含在URL中,也可以包含在请求体中,例如表单提交时的参数。在Java中,可以使用 HttpServletRequest 对象来获取HTTP请求的参数。本文将详细解释如何使用Java获取HTTP请求的参数,包括通用的方式以及示例代码。

    2024年02月05日
    浏览(34)
  • 记一次nginx反代m3u8资源站出现的问题(upstream和ssl等)

    本人小白,纯粹的给自己记录一下哈,大佬勿喷! 规定一下:资源站的域名 称为目标域名;本地做反向代理的域名 称为反代域名。好分辨 在最近一次本地测试中,因为资源站设定原因,所以需要自行反代网站才能正常使用,那么就只有配置nginx反向代理目标域名,于是就简

    2024年02月20日
    浏览(28)
  • yum安装nginx、源码安装、nginx开机自启、配置多域名与重定向、反向代理、配置IPv6、获取证书与配置证书https

    可以使用yum直接安装nginx:yum -y install nginx,如果安装报错,可以换个yum源试试 源码安装提供更大的灵活性,但需要更多的手动管理,而Yum安装则更方便 yum源镜像站,阿里云的推荐:https://developer.aliyun.com/mirror/ 常用的镜像:epel和centos,根据提示命令直接安装即可 然后执行:

    2024年02月20日
    浏览(49)
  • springboot异步文件上传获取输入流提示找不到文件java.io.FileNotFoundException

    springboot上传文件,使用异步操作处理上传的文件数据,出现异常如下: 这个是在异步之后使用传过来的MultipartFile对象尝试调用getInputStream方法发生的异常。 java.io.FileNotFoundException: C:UsersAdministratorAppDataLocalTemptomcat.8082.9218483334936865663workTomcatlocalhostsdBusinessOnlineSchoolupl

    2024年02月12日
    浏览(44)
  • Java之获取Nginx代理之后的客户端IP

    Nginx 代理接口之后,后台获取的IP地址都是127.0.0.1, 解决办法是需要配置Nginx搭配后台获取的方法,获得设备的真实地址 。我们想要获取的就是nginx代理日志中的这个IP 首先在nginx代理的对应location增加如下配置 示例 获取客户端IP地址工具类 这样就可以通过代码获取到客户端

    2024年02月21日
    浏览(30)
  • docker:Java通过nginx获取客户端的真实ip地址

    我们的平台使用Spring Cloud微服务架构,使用Spring Boot构建Java服务,使用google的jib插件打成docker镜像包 我们使用docker虚拟化部署,使用docker-compose统一管理所有服务,包括Java服务和nginx等组件 我们前后端分离,前端通过nginx访问我们的网关(Spring Cloud Gateway),再转发到对应的

    2024年01月18日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包