nginx 如何配置 https 强制跳 http - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yimaneilicj
V2EX    NGINX

nginx 如何配置 https 强制跳 http

  •  
  •   yimaneilicj 2018-05-10 16:19:11 +08:00 5490 次点击
    这是一个创建于 2720 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为业务需求,必须实现 https 跳到 http。。 求教。

    29 条回复    2018-05-11 14:13:49 +08:00
    qcloud
        1
    qcloud  
       2018-05-10 16:30:23 +08:00 via iPhone
    不跳 https 不就行了
    yimaneilicj
        2
    yimaneilicj  
    OP
       2018-05-10 16:32:06 +08:00
    在 Safari 中有的时候会莫名其妙的加上 在 http 协议下下加载了 https 协议的资源是不是就会自动加上?
    @qcloud
    misaka19000
        3
    misaka19000  
       2018-05-10 16:32:12 +08:00
    做个重定向不就行了
    qcloud
        4
    qcloud  
       2018-05-10 16:34:18 +08:00 via iPhone
    @yimaneilicj 不会,如果 https 协议中有 http 链接会报错
    rayc9223
        5
    rayc9223  
       2018-05-10 16:34:21 +08:00   1
    listen 443 ssl;
    rewrite ^ http://$http_host$request_uri? permanent;
    laudukang
        6
    laudukang  
       2018-05-10 16:42:41 +08:00
    一页 50 条帖子,完全可以自行 Google 的问题占了其中一条
    yongjing
        7
    yongjing  
       2018-05-10 16:43:13 +08:00
    server {
    ...
    return 301 http://example.com$request_uri;
    }
    yimaneilicj
        8
    yimaneilicj  
    OP
       2018-05-10 16:44:23 +08:00
    @laudukang 自行股沟了一番,最后没有找到合适的解决办法才来询问大家的。
    yimaneilicj
        9
    yimaneilicj  
    OP
       2018-05-10 16:46:24 +08:00
    @yongjing
    @rayc9223
    @qcloud
    @misaka19000
    很感谢回复,我再去试试,对 nginx 还不是很在行
    yhxx
        10
    yhxx  
       2018-05-10 16:47:32 +08:00
    直接 return 一个 301 试试?
    pexcn
        11
    pexcn  
       2018-05-10 17:19:11 +08:00
    301 重定向

    ```
    server {
    listen 80;
    server_name <domain_name>;
    return 301 https://$server_name$request_uri;
    }

    server {
    listen 443 ssl http2;
    server_name <domain_name>;

    # ......
    }
    ```
    pexcn
        12
    pexcn  
       2018-05-10 17:20:41 +08:00
    看错了,应该是

    ```
    server {
    listen 443 ssl http2;
    server_name <domain_name>;

    # ......

    return 301 http://$server_name$request_uri;
    }

    server {
    listen 80;
    server_name <domain_name>;

    # ......
    }
    ```
    cpdyj
        13
    cpdyj  
       2018-05-10 17:22:44 +08:00 via Android   1
    你的 HTTPS 是不是开了 HSTS ?
    edsion996
        14
    edsion996  
       2018-05-10 17:23:04 +08:00   1
    推荐可以参考这个: https://imququ.com/post/my-nginx-conf.html
    yimaneilicj
        15
    yimaneilicj  
    OP
       2018-05-10 18:13:42 +08:00
    @zjb861107 好的,多谢指点!
    chinvo
        16
    chinvo  
       2018-05-10 18:22:08 +08:00 via iPhone
    什么业务需求这么奇葩
    riyoukakan
        17
    riyoukakan  
       2018-05-10 18:32:44 +08:00
    if ($server_port ~ 443){
    rewrite ^(/.*)$ http://$host$1 permanent;
    }
    yimaneilicj
        18
    yimaneilicj  
    OP
       2018-05-10 18:50:51 +08:00
    @cpdyj 一语点醒梦中人。。。就是 nginx 在配置的时候加了 [add_header Strict-Transport-Security max-age=15768000;] 导致。。Safari 每次输入域名都会跳到 https 的协议,注释掉就好了。那么问题来了,之前带着这个 header 访问过 https 协议的浏览器中应该是存有这个 header 信息的吧,那么怎么清理掉呢?
    sean328
        19
    sean328  
       2018-05-10 19:14:27 +08:00
    做一个永久的 rewrite 就行,这个问题百度就可以解决吧
    MonoLogueChi
        20
    MonoLogueChi  
       2018-05-10 19:28:14 +08:00 via Android
    @yimaneilicj 这个应该无解,等过期吧
    paranoiagu
        21
    paranoiagu  
       2018-05-10 19:37:30 +08:00 via Android
    @yimaneilicj 清客户端缓存即可。
    oh
        22
    oh  
       2018-05-10 19:57:21 +08:00 via iPhone   2
    @yimaneilicj 加个 Strict-Transport-Security max-age=0 看看能不能覆盖掉
    yimaneilicj
        23
    yimaneilicj  
    OP
       2018-05-10 20:15:07 +08:00 via iPhone
    @paranoiagu
    @oh
    @MonoLogueChi
    @sean328
    感谢楼上的几位大哥的回复,十分感谢!

    @oh 回去试一下这个方案是否行得通,然后回来告诉您。
    yimaneilicj
        24
    yimaneilicj  
    OP
       2018-05-10 20:16:06 +08:00 via iPhone
    @chinvo 前端人员说 https 和 http 两种协议下,在 local 什么的本地存储中数据不能共用。
    chinvo
        25
    chinvo  
       2018-05-10 20:20:17 +08:00 via iPhone   1
    @yimaneilicj #24 那全跳去 https 啊
    owt5008137
        26
    owt5008137  
       2018-05-10 21:34:18 +08:00 via Android
    if ($scheme = https) {
    return 301 http://$server_name$request_uri;
    }
    pandago
        27
    pandago  
       2018-05-10 21:34:25 +08:00 via iPhone
    @yimaneilicj localstorage 跨域
    IvanLi127
        28
    IvanLi127  
       2018-05-11 12:50:58 +08:00 via Android
    @yimaneilicj 凉了 叫访问过的人都清理下浏览器吧。。。
    zhuweiyou
        29
    zhuweiyou  
       2018-05-11 14:13:49 +08:00
    开了 HSTS ?凉了。换域名吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5752 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:27 PVG 16:27 LAX 01:27 JFK 04:27
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86