k8s ingress-nginx 80 跳转 443 重定向多次

2020-12-29 10:17:59 +08:00
 ohohohh

nginx 配置如下:

ingress 增加了如下配置: 以及 ssl 证书: 页面重定向多次: 各位大神,求解~~~

3382 次点击
所在节点    Kubernetes
12 条回复
leadfast
2020-12-29 10:25:30 +08:00
return 301 https://xxx 不应该是新的域名么,$server_name 还是自己吧?
monsterxx03
2020-12-29 10:29:44 +08:00
你这配得有点奇怪啊, ingress 那边做 https 重定向不就完了.
ssl-redirect 打开, 后端 nginx 那边不要配置 https.

ingress-nginx -> nginx 是 走的 http, 自然就被 nginx 无限重定向回 https 了.

一定要用 https 回源可以设置 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
Judoon
2020-12-29 10:47:50 +08:00
二楼说的对,如果你的第一份 nginx 只是 k8s 中的一个服务,就不要监听 443 了,只用 80 提供服务即可。
ingress 转发到 nginx 的 80,证书由 ingress 处理。
如果你想两边都加密,那就把 nginx 的 pod 对应的 service 修改到 443 端口,ingress 转发到 443 端口的 service
okletswin
2020-12-29 10:48:24 +08:00
你不能在前台 nginx 的 443 端口转给后端的 80 端口,而这个 80 端口还是重定向的,这显然死循环了。
ohohohh
2020-12-29 10:52:25 +08:00
@monsterxx03 #2 @Judoon #3 嗯嗯,我去掉了 443,直接用 80 是可以,证书也认到了,但是又有一个新的问题,就是我前端访问后端 gateway,报错 not an SSL/TLS record~~~~,一开始就是应该报这个错,我才想着,是不是要 nginx 服务,80 跳转 443 才不会说报错 not an SSL/TLS record
Judoon
2020-12-29 11:03:33 +08:00
@ohohohh 你调后端接口的协议写死了 http 么?
ohohohh
2020-12-29 11:03:59 +08:00
@Judoon #6 没错,写死了
Judoon
2020-12-29 11:14:45 +08:00
我没理解错的话,是 gateway 接到请求向后端服务转发的时候报错 not an SSL/TLS record ?

那你看看是不是 gateway 转发的时候带上了 x-forwarded-proto 类似的 header
ohohohh
2020-12-29 11:22:38 +08:00
@Judoon #8 没有呢,不过我已经知道哪里出问题了~~~~刚刚 google 了一下,看到一个老外的问题解决了,问题出现在这里 改为 lb:http://xxxxx 就可以了
ohohohh
2020-12-29 16:07:03 +08:00
@Judoon #8 貌似还是不行,改为 lb://http//xxx 不会显示 not an SSL/TLS record 但是还是会报错,真是神奇了
ohohohh
2020-12-29 16:09:15 +08:00
就好像感觉 nginx 的反向代理没有把 https 反向代理为 http
asilin
2020-12-29 16:19:06 +08:00
http 跳转 https,只需要加一句注解即可:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/739857

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX