私信  •  关注

Necevil

Necevil 最近回复了
6 年前
回复了 Necevil 创建的主题 » Kubernetes nginx通过301而不是308进入HTTP到HTTPS重定向?

这些说明适用于Azure AKS用户,但对于Facebook/社交财产预览链接(显示为308永久重定向)的解决方案可能适用于任何云提供商(尽管尚未测试),您只需更改登录/获取凭据的方式等。

感谢Rico的解决方案!因为这只在Facebook上测试过,所以你可能会或者可能不想使用configmap应用程序路径(上面提到过),这将通过手动编辑configmap而不是使用 kubectl apply -f 应用本地保存的一个。

  1. 为您的cluser获取az证书( az login )
  2. 承担集群的角色: az aks get-credentials --resource-group yourGroup --name your-cluster
  3. 浏览群集: az aks browse --resource-group yourGroup --name your-cluster
  4. 导航到包含入口nginx容器的名称空间(不是后端服务),尽管它们可能在同一个ns中。
  5. 在左侧导航菜单(设置上方)上找到“configmaps”选项卡并单击它。
  6. 编辑yaml的“data”元素并添加以下行(注意键/值中名称和数字的引号): "data": { "some-other-setting-here": "false", "http-redirect-code": "301" } 除了最后一行之外,每个键/值行后面都需要一个逗号。
  7. 删除后重新启动nginx控制器盒 确保 您不会像我一样删除部署。
  8. 如果您想提高生产效率,可以升级nginx安装(从helm),该安装将通过以下方式在流程中重新启动/重新创建容器: helm upgrade ngx-ingress stable/nginx-ingress 其中,ngx entress是您的头盔安装的名称。还要注意,使用“--reuse values”标志将导致升级失败(请重新: https://github.com/helm/helm/issues/4337 )
  9. 如果您不知道您在安装时使用的Nginx名称,您可以使用 helm list 找到它。
  10. 最后,为了测试并确保您的重定向使用了正确的configmap代码,请将您的HTTP站点卷曲为: curl myhttpdomain.com 您应该收到这样的信息:

` `

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.15.3</center>
</body>
</html>

` `

这里要注意的一件重要的事情是,如果你正在修改301,请重新直接尝试修复Facebook或其他社交媒体属性(Twitter等)的预览链接,那么很可能这不会修复任何链接到你已经链接到的任何页面/帖子,至少不会立即修复。

社交属性都使用强缓存来限制其资源使用,但您可以通过链接到以前未引用的新页面/文章来查看上面的内容是否修复了预览链接问题。

注意“post”的含义

因此,nginx entress使用代码308的主要原因是,在您发送POST请求的情况下,它会保持“body”(正文)/有效载荷不变(与使用浏览器进行的普通GET请求链接相反)。

对我来说,这不是一个问题,但是如果你出于任何原因将邮件发送到HTTP地址,并希望能够无缝地重新定向,那么在你切换到邮件中讨论的301重定向之后,这可能不起作用。

但是,如果你在发送帖子请求时没有期望一个无缝的重定向(我认为大多数人可能没有,我知道我没有),那么我认为这是修复Facebook 308永久重定向行为的最佳方法。