Cod*_*der 14 kubernetes nginx-ingress
要将任何 HTTP 流量重定向到启用 tls 的主机上的 HTTPS,我已将以下注释添加到我的入口资源中
nignx.ingress.kubernetes.io/force-ssl-redirect: true
Run Code Online (Sandbox Code Playgroud)
这样,当我卷曲有问题的主机时,我会按预期重定向
但是当我使用浏览器时,HTTP 请求超时。
现在,我不确定在curl工作时我在Nginx ingress conf中是否做错了什么?请问有什么指点吗?谢谢!
完整注释:
annotations:
kubernetes.io/ingress.class: nginx-ingress
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 100m
nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
Run Code Online (Sandbox Code Playgroud)
规则
rules:
- host: hostX
http:
paths:
- backend:
serviceName: svcX
servicePort: 8080
path: /
- host: hostY
http:
paths:
- backend:
serviceName: svcX
servicePort: 8080
path: /
tls:
- hosts:
- hostX
- hosts:
- hostY
secretName: hostY-secret-tls
Run Code Online (Sandbox Code Playgroud)
笔记:
正如 @mdaniel 提到的,您的代码片段显示nignx.ingress.kubernetes.io/force-ssl-redirect: true但注释应该是字符串。请注意,在您的“完整”配置中,您同时拥有force-ssl-redirect: "true" (现在正确的是字符串)和ssl-redirect: "false".
只需删除注释 nginx.ingress.kubernetes.io/ssl-redirect: "false"并保留nignx.ingress.kubernetes.io/force-ssl-redirect: "true"
Also enable即可--enable-ssl-passthrough。这是在 Ingress 对象中启用直通后端所必需的。
您的注释应如下所示:
kubernetes.io/ingress.class: nginx-ingress
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 100m
nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
Run Code Online (Sandbox Code Playgroud)
如果您在 TLS 部分下定义了主机,则只能使用 https 来访问它们。HTTP 请求将被重定向为使用 HTTPS。这就是为什么你不能通过 HTTP 访问主机。此外,您还必须为 host 指定 Secret hostX,否则将使用默认证书进行入口。或者,如果您不想hostX通过 HTTPS 连接到主机,只需创建不带 TLS 部分的不同入口。
| 归档时间: |
|
| 查看次数: |
20258 次 |
| 最近记录: |