有没有办法操纵从入口资源中的上游服务器接收的标头值?



我有以下指向入口资源的网址:

https://example.com/USA/my-app
https://example.com/UK/my-app

我已经编写了一个入口配置,以针对 URI 中基于国家/地区的不同服务:

host: example.com
path: /USA(/|$)(.*)$  # Application context of upstream server is /my-app 
backend:
serviceName: USA-REGION-SERVICE
servicePort: 80
path: /UK(/|$)(.*)$  # Application context of upstream server is /my-app
backend:
serviceName: UK-REGION-SERVICE
servicePort: 80 

并且,我使用入口注释将目标重写为:

nginx.ingress.kubernetes.io/rewrite-target: /$2

我在这里面临的问题是JSESSIONID cookie;上游服务器返回带有路径/my-app的set-cookie标头是正确的;但是浏览器指向路径/USA/my-app或/UK/my-app。

结果,我丢失了上游服务器生成并返回的会话作为 set-cookie 标头,用户很快就会注销,他们会发送另一个请求。

有什么方法可以更新 JSESSIONID 响应标头吗?或者,我尝试的方式有问题?

添加nginx.ingress.kubernetes.io/session-cookie-path注释应该可以解决您的问题。

名称:nginx.ingress.kubernetes.io/session-cookie-path

说明:将在 Cookie 上设置的路径(如果入口路径使用正则表达式,则需要(

值:字符串(默认为当前匹配的路径(

最新更新