V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ohohohh
V2EX  ›  Kubernetes

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

  •  1
     
  •   ohohohh · 2020-12-29 10:17:59 +08:00 · 3350 次点击
    这是一个创建于 1420 天前的主题,其中的信息可能已经有所发展或是发生改变。

    nginx 配置如下: nginx 配置

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

    12 条回复    2020-12-29 16:19:06 +08:00
    leadfast
        1
    leadfast  
       2020-12-29 10:25:30 +08:00
    return 301 https://xxx 不应该是新的域名么,$server_name 还是自己吧?
    monsterxx03
        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"
    Judoon
        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
    okletswin
        4
    okletswin  
       2020-12-29 10:48:24 +08:00
    你不能在前台 nginx 的 443 端口转给后端的 80 端口,而这个 80 端口还是重定向的,这显然死循环了。
    ohohohh
        5
    ohohohh  
    OP
       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
        6
    Judoon  
       2020-12-29 11:03:33 +08:00
    @ohohohh 你调后端接口的协议写死了 http 么?
    ohohohh
        7
    ohohohh  
    OP
       2020-12-29 11:03:59 +08:00
    @Judoon #6 没错,写死了
    Judoon
        8
    Judoon  
       2020-12-29 11:14:45 +08:00
    我没理解错的话,是 gateway 接到请求向后端服务转发的时候报错 not an SSL/TLS record ?

    那你看看是不是 gateway 转发的时候带上了 x-forwarded-proto 类似的 header
    ohohohh
        9
    ohohohh  
    OP
       2020-12-29 11:22:38 +08:00
    @Judoon #8 没有呢,不过我已经知道哪里出问题了~~~~刚刚 google 了一下,看到一个老外的问题解决了,问题出现在这里 改为 lb:http://xxxxx 就可以了
    ohohohh
        10
    ohohohh  
    OP
       2020-12-29 16:07:03 +08:00
    @Judoon #8 貌似还是不行,改为 lb://http//xxx 不会显示 not an SSL/TLS record 但是还是会报错,真是神奇了
    ohohohh
        11
    ohohohh  
    OP
       2020-12-29 16:09:15 +08:00
    就好像感觉 nginx 的反向代理没有把 https 反向代理为 http
    asilin
        12
    asilin  
       2020-12-29 16:19:06 +08:00
    http 跳转 https,只需要加一句注解即可:
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4169 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:17 · PVG 18:17 · LAX 02:17 · JFK 05:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.