我们在 Azure AKS 上运行了几个 k8s 集群。该服务(幽灵博客)位于 Nginx 入口的后面,并使用 Letsencrypt 的证书进行保护。所有这些都可以正常工作,但重定向行为是我遇到的问题。
Ingress 正确地从http://whatever.com重定向到 https://whatever.com — 问题是它使用 308 重定向来实现这一点,该重定向会在用户从网站共享页面时剥离所有帖子/页面 Meta .
该问题导致在大多数社交属性上共享网站任何页面的用户收到“预览链接”——其中页面标题和页面元预览不起作用,而是替换为“308 永久重定向”文本——看起来像这样:
从这里的 ingress-nginx 文档中,我可以看到这是预期的行为(即 308 重定向),我认为不是这些服务尝试创建页面预览时与社交共享服务的交互。
虽然这个问题可以通过 Facebook(或 twitter 等)默认直接指向 https 站点来解决,但我目前无法强制这些站点在 https 中查找将用于创建预览的内容。
设置永久重定向代码
我还可以看到,看起来我应该能够将重定向代码设置为我想要的任何内容(我相信 301 重定向将允许 Facebook 等人正确提取帖子/页面片段元),找到的文档在这里。
问题是当我按指定添加重定向代码注释时:
nginx.ingress.kubernetes.io/permanent-redirect-code: "301"
尽管能够(从我的 kubectl 代理)看到重定向代码注释正确应用,但我仍然在我的资源上获得 308 重定向。作为参考,我在 Ingress 上的完整注释列表如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ghost-ingress
annotations:
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/permanent-redirect-code: "301"
重申一下——我的问题是;通过自定义错误代码(在我的情况下为 301)强制重定向到 https 的正确方法是什么?