gpt4 book ai didi

nginx k8s 入口 - 强制 www 和 https?

转载 作者:行者123 更新时间:2023-12-03 01:30:55 26 4
gpt4 key购买 nike

我的 kubernetes 设置如下所示:

nginx 入口 -> 负载均衡器 -> nginx 应用

获得 www.foo.com 的 SSL 证书后,我将其作为 secret 安装在我的 nginx 入口中,并且它按预期工作 - 流量到 www.foo。 com 被重定向到 https 版本,并且浏览器会显示安全连接指示器。伟大的。

然而,让入口将非 www 流量重定向到网站的 www 版本并不容易。 我尝试使用 kubernetes.io/from-to-www-redirect: "true",但它似乎没有做任何事情 - 导航到 foo.com 不会将我重定向到网址的 www 版本,而是将我带到网站的不安全版本,或者将我导航到默认后端 - 404取决于我是否将 foo.com 作为主机包含在我的入口中并拥有自己的路径。

我已经能够通过将以下内容添加到我的实际应用程序的 nginx 配置来设置不完整的重定向 -

server {
listen 80;
server_name foo.com;
return 301 http://www.foo.com$request_uri;
}

更新: from-to-www-redirect 确实有效;您只需使用 nginx.ingress.kubernetes.io 引用它,而不是像我一样使用 kubernetes.io 来引用它。但是,这仅适用于 foo.com - 明确输入 https://foo.com 会导致浏览器显示安全警告,并且不会重定向到正确的 URL https://www.foo.com 发生。

这是我当前的 nginx 入口配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: foo-https-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
rules:
- host: www.foo.com
http:
paths:
- backend:
serviceName: foo-prod-front
servicePort: 80
path: /
tls:
- hosts:
- www.foo.com
secretName: tls-secret

最佳答案

您需要添加要重定向的域的证书:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: foo-https-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
rules:
- host: foo.com
http:
paths:
- backend:
serviceName: foo-prod-front
servicePort: 80
path: /
- host: www.foo.com
http:
paths:
- backend:
serviceName: foo-prod-front
servicePort: 80
path: /
tls:
- hosts:
- foo.com
- www.foo.com
secretName: tls-secret

我不完全确定 from-to-www-redirect 是否适用于此设置,但您可以将其替换为以下行,这些行确实有效:

    nginx.ingress.kubernetes.io/configuration-snippet: |
if ($host = 'foo.com' ) {
rewrite ^ https://www.foo.com$request_uri permanent;
}

关于nginx k8s 入口 - 强制 www 和 https?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com