最近在做 k8s 容器下云的迁移,今天切换域名之后,业务 api 出现308 状态码,我们的环境是:公网负载ip -> nginx -> ingress -> pod,刚开始排查思路一直在 k8s 集群外部,一直无法定位到原因,即使 google 对 308 也是毫无头绪。

后来也想到之前的 ingress 用的阿里云 ACK 自带的,和 ingress-nginx 不同,所以通过 ingress 本地访问 API 也是 308,搜索问题改为访问 ingress 状态码 308,才有了眉目,是因为强跳 https 出现的重定向

在 HTTP 协议中, 308 Permanent Redirect(永久重定向)是表示重定向的响应状态码,说明请求的资源已经被永久的移动到了由 Location 首部指定的 URL 上。浏览器会进行重定向,同时搜索引擎也会更新其链接。

通过对 ingress 增加注解来禁止对 http 强制跳转

  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"

在网上查到的原因是因为前面的代理已经开启了 https(但并没有明确指出是强制跳转),后面会被强制使用 https 进行访问

重新应用 ingress 后业务访问恢复正常。

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0