`
conkeyn
  • 浏览: 1528950 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

解决nginx代理spring boot tomcat工程报错

 
阅读更多

问题场景:在未通过nginx代理情况下所有业务逻辑正常,但是经常nginx代理后某些业务就报空指针错误。

报错提示:

java.lang.NullPointerException
        at org.springframework.web.util.WebUtils.isSameOrigin(WebUtils.java:816)
        at org.springframework.web.cors.DefaultCorsProcessor.processRequest(DefaultCorsProcessor.java:76)
        at org.springframework.web.servlet.handler.AbstractHandlerMapping$CorsInterceptor.preHandle(AbstractHandlerMapping.java:503)
        at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:134)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:956)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)

 找到代码:

	public static boolean isSameOrigin(HttpRequest request) {
		String origin = request.getHeaders().getOrigin();
		if (origin == null) {
			return true;
		}
		UriComponents actualUrl = UriComponentsBuilder.fromHttpRequest(request).build();
		UriComponents originUrl = UriComponentsBuilder.fromOriginHeader(origin).build();
		return (actualUrl.getHost().equals(originUrl.getHost()) && getPort(actualUrl) == getPort(originUrl));
	}

 看这个代码逻辑是会去判断实际的请求地址和源地址是否一致。

 

解决方法:在nginx代理层修改请求头为浏览器的请求来源。

        location /mgmt {
                proxy_pass http://sunbar_mgmt/mgmt;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass_request_headers              on;
        }

 

分享到:
评论

相关推荐

    可视化文件服务器,基于Spring boot Tomcat开发的java版本

    《基于Spring Boot与Tomcat构建的可视化文件服务器详解》 在现代企业环境中,文件管理和共享是日常工作中的重要环节。为了高效、安全地实现这一目标,一种实用的解决方案就是利用技术手段构建一个可视化的文件...

    Nginx+tomcat+redis

    - **应用托管**:部署并运行基于Java的Web应用,如Spring Boot、Struts等框架的应用。 3. **Redis**: Redis是一个高性能的键值存储系统,常用于缓存和快速数据访问。在Nginx+Tomcat架构中,Redis的作用有: - *...

    Springboot+vue的社区医疗综合服务平台(有报告) Javaee项目,springboot vue前后端分离项目

    标题中的“Springboot+vue的社区医疗综合服务平台”是一个基于Javaee技术栈的项目,它采用了现代化的开发框架Spring Boot和前端框架Vue.js,实现了前后端分离的设计模式。这种架构方式在当前的Web开发中非常流行,...

    nginx各种代理的config配置,直接替换

    本文将深入探讨如何配置Nginx以代理不同的服务,如Tomcat、Spring Boot和Vue应用。 一、Nginx基本配置 Nginx的配置文件通常位于`/etc/nginx/nginx.conf`,这是一个包含多个块(block)的结构化文件,如`http`、`...

    nginx-file-download:基于Nginx,Spring Boot和SQLite(或MySQL)的大文件下载服务

    这是一个基于Nginx,Spring Boot和SQLite(或MySQL)的大文件(通常为GB)下载服务。 动态添加更多文件和更多Nginx节点是支持的,这仅需要在管理Web页面上执行一些注册步骤。 而且,Nginx的基本支持是 。 1.技术栈 ...

    springboot+Nginx+redis实现session共享

    在Spring Boot中,默认使用Servlet容器(如Tomcat)的内置Session管理。然而,对于分布式系统,这种本地Session存储方式不再适用,因为每个服务器实例都可能有自己的Session副本,导致数据不一致。 **Nginx与负载...

    Spring Boot 微信点餐系统.docx

    【Spring Boot 微信点餐系统】是一个使用Spring Boot框架构建的应用,旨在实现一个基于微信的在线点餐功能。这个系统采用了前后端分离的架构,前端负责用户界面和交互,后端则处理业务逻辑和数据存储。以下是关于该...

    基于Spring Boot的在线考试系统-论文-2024

    2. **核心特性**:Spring Boot的核心特性包括自动配置、内嵌式Web服务器(如Tomcat)、健康检查、Actuator监控、YAML/Properties配置支持等。 3. **Spring Boot优势**:Spring Boot简化了依赖管理,降低了项目复杂...

    spring-boot-sample-tomcat-ssl:演示 Spring Boot SSL 配置问题

    5. **处理Nginx或Apache反向代理**:在某些情况下,你可能会在Spring Boot应用前面设置Nginx或Apache作为反向代理服务器,以处理SSL终止和负载均衡。在这种情况下,你需要在这些代理服务器上配置SSL证书,并将HTTP...

    记一次通过Arthas定位解决springboot中内嵌tomcat问题.docx

    本文将讲述如何使用Arthas工具来定位和解决Spring Boot中内嵌Tomcat问题,通过记录一次实际的定位和处理流程,来分享解决问题的经验和方法。 一、问题背景 在Spring Boot中,内嵌Tomcat是非常常见的做法,但是在...

    基于Spring Boot的高校食堂物流管理系统任务书.docx

    系统技术要求包括Java相关的开发技术、npm管理前端框架引用类、Vue+elementUI实现前端页面、JQuery、AJAX、VUE、MyBatis、spring boot、springMVC、axios、redis、Maven等编程技术、Windows系统、Tomcat、nginx等...

    tomcat下webapps防止刷新报错的静态文件

    设置一个反向代理服务器,如Nginx或Apache,将静态文件的请求转发到一个专门的静态文件服务器上。这样即使Tomcat在更新,静态文件的访问也不会中断。 6. **优化Tomcat的热部署**: 可以使用如JRebel等热部署工具...

    MySQL+Java+spring boot+考勤系统

    小程序上课考勤系统,后台管理,小程序前端GPS签到,小程序定位打卡,迟到统计等等 版本介绍: ...应用框架版本:Spring Boot- 2.0.7、SpringCloud-Finchley.SR2 应用框架版本:Ant.Design-pro-4.0.0

    spring boot+layui开发物业后台管理系统.rar

    在物业后台管理系统中,我们可以利用Spring Boot的内置Tomcat服务器,无需额外配置即可实现Web应用的运行。同时,Spring Boot的自动配置功能能够自动识别并配置各种依赖,如数据访问层的JPA、事务管理等,大大提高了...

    nginx 学习笔记实用知识库分享知识分享

    Nginx 可以与 Spring Boot 集成,实现高性能的反向代理和负载均衡。Nginx 作为反向代理服务器,Spring Boot 作为应用服务器。 Nginx 在 Windows 环境下的安装和配置 在 Windows 环境下,可以使用编译好的 Nginx 二...

    Spring Boot连接超时导致502错误的实战案例

    在Spring Boot应用中,502 Bad Gateway错误通常表示服务器作为网关或代理,但在尝试与上游服务器通信时未收到有效响应。在本案例中,该问题是由Spring Boot应用的连接超时设置不当引起的。让我们深入探讨这个问题,...

    springboot+vue+nginx完整demo代码

    【标题】"springboot+vue+nginx完整demo代码"是一个示例项目,它结合了三个关键技术:Spring Boot、Vue.js...通过分析和运行此项目,你可以深入了解Spring Boot的API设计、Vue.js的组件化开发以及Nginx的反向代理功能。

    SpringBoot微服务

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring...spring boot 要解决的问题, 精简配置是一方面, 另外一方面是如何方便的让spring生态圈和其他工具链整合(比如redis, email, elasticsearch)

    【spring-boot-seckill分布式秒杀系统 v1.0】从0到1构建的java秒杀系统源码+安装说明

    spring-boot-seckill分布式秒杀系统是一个用SpringBoot开发的从0到1构建的分布式秒杀系统,项目案例基本成型,逐步完善中。 开发环境: JDK1.8、Maven、Mysql、IntelliJ IDEA、SpringBoot1.5.10、zookeeper3.4.6、...

    【BAT必备】spring面试题,spring MVC面试题,spring boot面试题,spring cloud面试题

    2022年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,spring MVC,spring boot,spring cloud,netty,dubbo,activemq,Java web,jvm,kafka,MongoDB,...

Global site tag (gtag.js) - Google Analytics