问题场景:在未通过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的Web应用,如Spring Boot、Struts等框架的应用。 3. **Redis**: Redis是一个高性能的键值存储系统,常用于缓存和快速数据访问。在Nginx+Tomcat架构中,Redis的作用有: - *...
标题中的“Springboot+vue的社区医疗综合服务平台”是一个基于Javaee技术栈的项目,它采用了现代化的开发框架Spring Boot和前端框架Vue.js,实现了前后端分离的设计模式。这种架构方式在当前的Web开发中非常流行,...
本文将深入探讨如何配置Nginx以代理不同的服务,如Tomcat、Spring Boot和Vue应用。 一、Nginx基本配置 Nginx的配置文件通常位于`/etc/nginx/nginx.conf`,这是一个包含多个块(block)的结构化文件,如`http`、`...
这是一个基于Nginx,Spring Boot和SQLite(或MySQL)的大文件(通常为GB)下载服务。 动态添加更多文件和更多Nginx节点是支持的,这仅需要在管理Web页面上执行一些注册步骤。 而且,Nginx的基本支持是 。 1.技术栈 ...
在Spring Boot中,默认使用Servlet容器(如Tomcat)的内置Session管理。然而,对于分布式系统,这种本地Session存储方式不再适用,因为每个服务器实例都可能有自己的Session副本,导致数据不一致。 **Nginx与负载...
【Spring Boot 微信点餐系统】是一个使用Spring Boot框架构建的应用,旨在实现一个基于微信的在线点餐功能。这个系统采用了前后端分离的架构,前端负责用户界面和交互,后端则处理业务逻辑和数据存储。以下是关于该...
2. **核心特性**:Spring Boot的核心特性包括自动配置、内嵌式Web服务器(如Tomcat)、健康检查、Actuator监控、YAML/Properties配置支持等。 3. **Spring Boot优势**:Spring Boot简化了依赖管理,降低了项目复杂...
5. **处理Nginx或Apache反向代理**:在某些情况下,你可能会在Spring Boot应用前面设置Nginx或Apache作为反向代理服务器,以处理SSL终止和负载均衡。在这种情况下,你需要在这些代理服务器上配置SSL证书,并将HTTP...
本文将讲述如何使用Arthas工具来定位和解决Spring Boot中内嵌Tomcat问题,通过记录一次实际的定位和处理流程,来分享解决问题的经验和方法。 一、问题背景 在Spring Boot中,内嵌Tomcat是非常常见的做法,但是在...
系统技术要求包括Java相关的开发技术、npm管理前端框架引用类、Vue+elementUI实现前端页面、JQuery、AJAX、VUE、MyBatis、spring boot、springMVC、axios、redis、Maven等编程技术、Windows系统、Tomcat、nginx等...
设置一个反向代理服务器,如Nginx或Apache,将静态文件的请求转发到一个专门的静态文件服务器上。这样即使Tomcat在更新,静态文件的访问也不会中断。 6. **优化Tomcat的热部署**: 可以使用如JRebel等热部署工具...
小程序上课考勤系统,后台管理,小程序前端GPS签到,小程序定位打卡,迟到统计等等 版本介绍: ...应用框架版本:Spring Boot- 2.0.7、SpringCloud-Finchley.SR2 应用框架版本:Ant.Design-pro-4.0.0
在物业后台管理系统中,我们可以利用Spring Boot的内置Tomcat服务器,无需额外配置即可实现Web应用的运行。同时,Spring Boot的自动配置功能能够自动识别并配置各种依赖,如数据访问层的JPA、事务管理等,大大提高了...
Nginx 可以与 Spring Boot 集成,实现高性能的反向代理和负载均衡。Nginx 作为反向代理服务器,Spring Boot 作为应用服务器。 Nginx 在 Windows 环境下的安装和配置 在 Windows 环境下,可以使用编译好的 Nginx 二...
在Spring Boot应用中,502 Bad Gateway错误通常表示服务器作为网关或代理,但在尝试与上游服务器通信时未收到有效响应。在本案例中,该问题是由Spring Boot应用的连接超时设置不当引起的。让我们深入探讨这个问题,...
【标题】"springboot+vue+nginx完整demo代码"是一个示例项目,它结合了三个关键技术:Spring Boot、Vue.js...通过分析和运行此项目,你可以深入了解Spring Boot的API设计、Vue.js的组件化开发以及Nginx的反向代理功能。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring...spring boot 要解决的问题, 精简配置是一方面, 另外一方面是如何方便的让spring生态圈和其他工具链整合(比如redis, email, elasticsearch)
spring-boot-seckill分布式秒杀系统是一个用SpringBoot开发的从0到1构建的分布式秒杀系统,项目案例基本成型,逐步完善中。 开发环境: JDK1.8、Maven、Mysql、IntelliJ IDEA、SpringBoot1.5.10、zookeeper3.4.6、...
2022年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,spring MVC,spring boot,spring cloud,netty,dubbo,activemq,Java web,jvm,kafka,MongoDB,...