【发布时间】:2019-03-08 01:02:52
【问题描述】:
我们正在 Azure AKS 上运行几个 k8s 集群。 该服务(幽灵博客)位于 Nginx 入口的后面,并使用 Letsencrypt 的证书进行保护。所有这些都可以正常工作,但重定向行为是我遇到的问题。
Ingress 正确地从 http://whatever.com 重定向到 https://whatever.com — 问题在于它使用 308 重定向会在用户共享时删除所有帖子/页面元 来自网站的页面。
此问题会导致在大多数社交媒体上共享网站任何页面的用户收到“预览链接”——其中页面标题和页面元预览不起作用,而是替换为“308 永久重定向”文本——看起来像这样:
从ingress-nginx docs over here 我可以看到,这是预期的行为(即 308 重定向),我认为不是这些服务尝试创建页面预览时与社交共享服务的交互。
虽然问题将通过 Facebook(或 twitter 等)默认指向 https 站点来解决,但我目前无法强制这些站点在 https 中查找将用于创建预览。
设置永久重定向代码
我还可以看到,我应该能够将重定向代码设置为我想要的任何内容(我相信 301 重定向将允许 Facebook 等人正确地提取帖子/页面 sn-p 元数据) , docs on that found here.
问题是当我按指定添加重定向代码注释时:
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 的正确方法是什么?
【问题讨论】:
-
是什么让您认为您需要 301,您确定吗?
-
@rico 我敢肯定,对于任何从社交分享获得大量流量的网站来说,308 会导致显着次优的结果。基本上,链接(在社交或通过文本共享时)会导致该服务尝试获取元数据的 sn-p 以构建预览 - 如果单击链接,308 重定向确实有效,但预览看起来像垃圾并显示标题页面为“308 重定向”(字面意思)。大多数用户不知道这是什么,因此不会点击。当然,我个人可以只分享 https 链接,但我不能强迫我的用户也这样做。
-
...在预览中看起来很糟糕,字符用完了:)
-
添加了一个答案,希望对您有所帮助。
标签: kubernetes kubernetes-ingress nginx-ingress