nginx 配置如下:
ingress 增加了如下配置: 以及 ssl 证书: 页面重定向多次: 各位大神,求解~~~
1
leadfast 2020-12-29 10:25:30 +08:00
return 301 https://xxx 不应该是新的域名么,$server_name 还是自己吧?
|
2
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" |
3
Judoon 2020-12-29 10:47:50 +08:00
二楼说的对,如果你的第一份 nginx 只是 k8s 中的一个服务,就不要监听 443 了,只用 80 提供服务即可。
ingress 转发到 nginx 的 80,证书由 ingress 处理。 如果你想两边都加密,那就把 nginx 的 pod 对应的 service 修改到 443 端口,ingress 转发到 443 端口的 service |
4
okletswin 2020-12-29 10:48:24 +08:00
你不能在前台 nginx 的 443 端口转给后端的 80 端口,而这个 80 端口还是重定向的,这显然死循环了。
|
5
ohohohh OP @monsterxx03 #2 @Judoon #3 嗯嗯,我去掉了 443,直接用 80 是可以,证书也认到了,但是又有一个新的问题,就是我前端访问后端 gateway,报错 not an SSL/TLS record~~~~,一开始就是应该报这个错,我才想着,是不是要 nginx 服务,80 跳转 443 才不会说报错 not an SSL/TLS record
|
8
Judoon 2020-12-29 11:14:45 +08:00
我没理解错的话,是 gateway 接到请求向后端服务转发的时候报错 not an SSL/TLS record ?
那你看看是不是 gateway 转发的时候带上了 x-forwarded-proto 类似的 header |
9
ohohohh OP @Judoon #8 没有呢,不过我已经知道哪里出问题了~~~~刚刚 google 了一下,看到一个老外的问题解决了,问题出现在这里 改为 lb:http://xxxxx 就可以了
|
10
ohohohh OP @Judoon #8 貌似还是不行,改为 lb://http//xxx 不会显示 not an SSL/TLS record 但是还是会报错,真是神奇了
|
11
ohohohh OP 就好像感觉 nginx 的反向代理没有把 https 反向代理为 http
|
12
asilin 2020-12-29 16:19:06 +08:00
http 跳转 https,只需要加一句注解即可:
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" |