您的位置:首页 > 教育 > 锐评 > 请求重定向后,端口自动去掉的问题

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

2024/10/6 8:33:03 来源:https://blog.csdn.net/chw0629/article/details/140723054  浏览:    关键词:请求重定向后,端口自动去掉的问题

遇到的问题如下:

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来实现。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com