问题描述:
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