当前位置: 首页 > news >正文

请求重定向后,端口自动去掉的问题

遇到的问题如下:

nginx代理端口 1443 -> 9001访问: localhost:9001/index.html会重定向到 localhost:9001/login.html 没问题,因为没有登录。但是访问: localhost:1443/index.html会重定向到 localhost/login.html这个重定向的端口不见了。为什么呢?

经过修改Nginx配置,始终无效,验证发现是后端Java程序在生成重定向URL时没有考虑到前端代理的端口(springboot默认)。

Java应用程序在处理重定向时通常会基于请求头信息生成重定向URL。

如果Nginx代理没有正确传递或修改这些请求头,后端应用程序生成的URL可能会不包含端口号。

解决办法如下:

Nginx配置:

server {listen 1443;location / {proxy_pass http://localhost:9001;proxy_set_header Host $host:$server_port;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Port $server_port;proxy_set_header X-Real-IP $remote_addr;}
}

Spring配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.ForwardedHeaderFilter;@Configuration
public class WebConfig {@Beanpublic ForwardedHeaderFilter forwardedHeaderFilter() {return new ForwardedHeaderFilter();}
}

通过使用ForwardedHeaderFilter,Spring会自动处理X-Forwarded-*头信息,生成正确的重定向URL。

总结

如果Nginx配置无法解决端口丢失的问题,检查和修改后端Java程序的重定向逻辑,以确保生成的URL包含正确的端口号。这可以通过手动构建URL、使用X-Forwarded-*头信息或使用Spring的ForwardedHeaderFilter来实现。

相关文章:

  • -XX:MaxDirectMemorySize和-Dio.netty.maxDirectMemory区别
  • 使用Python实现深度学习模型:智能安防监控与异常检测
  • k8s中部署Jenkins、SonarQube、StorageClass部署流程
  • 微服务实战系列之玩转Docker(七)
  • golang设置远程调试
  • Mamba-yolo|结合Mamba注意力机制的视觉检测
  • Spring Boot整合Quartz使用的详解
  • 基于python的BP神经网络红酒品质分类预测模型
  • Github个人网站搭建详细教程【Github+Jekyll模板】
  • HTTP详解
  • MySQL之视图和索引实战
  • 使用git工具管理泰山派内核源码目录及抽打补丁简易流程
  • 【SpringCloud】 微服务分布式环境下的事务问题,seata大合集
  • STM32智能工业监控系统教程
  • 乾坤: 微前端项目切换时样式闪动(从无样式变为正常样式需要等 css chunk 文件加载完成, 加载延时受网速影响)
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【笔记】你不知道的JS读书笔记——Promise
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Docker: 容器互访的三种方式
  • ES6 ...操作符
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Fabric架构演变之路
  • Java,console输出实时的转向GUI textbox
  • Java深入 - 深入理解Java集合
  • laravel5.5 视图共享数据
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Median of Two Sorted Arrays
  • Mysql数据库的条件查询语句
  • PAT A1120
  • webpack项目中使用grunt监听文件变动自动打包编译
  • yii2权限控制rbac之rule详细讲解
  • 编写符合Python风格的对象
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 离散点最小(凸)包围边界查找
  • 每天一个设计模式之命令模式
  • 时间复杂度与空间复杂度分析
  • 微信小程序--------语音识别(前端自己也能玩)
  • 协程
  • 《码出高效》学习笔记与书中错误记录
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (7) cmake 编译C++程序(二)
  • (C++哈希表01)
  • (SpringBoot)第二章:Spring创建和使用
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (差分)胡桃爱原石
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转载)hibernate缓存
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET C# 使用GDAL读取FileGDB要素类