问题描述:
springboot web项目部署在k8s中,使用ingress代理,登录成功后,页面重定向请求地址URL中端口丢失,导致页面重定向跳转失败。
F12控制台调试模式下,对比容器化和非容器化重定向响应头Response Headers,可以发现重定向后端口丢失:
正常重定向: Location: http://127.0.0.1:8080/A/login
容器化后重定向: Location: http://127.0.0.1/A/login
解决方法:
1、在k8s的ingress的注解annotations中,添加配置参数:
nginx.ingress.kubernetes.io/use-port-in-redirects: "true" # 开启端口地址重写
apiVersion: v1
kind: Ingress
metadata:
name: app-ingress
namespace: app
annotations:
kubernetes.io/ingress.class: "nginx" ##指定Ingress Controller的类型
nginx.ingress.kubernetes.io/use-port-in-redirects: "true" # 开启端口地址重写
2、在k8s的ingress的注解annotations中,添加两个配置参数:
nginx.ingress.kubernetes.io/proxy-redirect-from: "http://127.0.0.1"
nginx.ingress.kubernetes.io/proxy-redirect-to: "http://127.0.0.1:8080"
apiVersion: v1
kind: Ingress
metadata:
name: app-ingress
namespace: app
annotations:
kubernetes.io/ingress.class: "nginx" ##指定Ingress Controller的类型
# 解决页面登录重定向端口丢失问题
nginx.ingress.kubernetes.io/proxy-redirect-from: "http://127.0.0.1"
nginx.ingress.kubernetes.io/proxy-redirect-to: "http://127.0.0.1:8080"
以上两种方法仅供参考,根据实际情况进行使用:
第1种方法并没有解决本人的问题,开启端口地址重写后,仍然出现端口丢失问题;
第2种方法参数配置后,页面跳转正常,无端口丢失情况出现。
文章讲述了在SpringBoot项目部署到Kubernetes并使用Ingress代理时,登录后页面重定向丢失端口的问题。提供了两种解决方法,包括在Ingress的annotations中配置`use-port-in-redirects`和`proxy-redirect`参数,后者解决了实际问题。
310

被折叠的 条评论
为什么被折叠?



