NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
yimaneilicj
V2EX  ›  NGINX

nginx 如何配置 https 强制跳 http

  •  
  •   yimaneilicj · May 10, 2018 · 6083 views
  •   You need to sign in to view this topic
    This topic created in 3004 days ago, the information mentioned may be changed or developed.

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

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

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

    @oh 回去试一下这个方案是否行得通,然后回来告诉您。
    yimaneilicj
        24
    yimaneilicj  
    OP
       May 10, 2018 via iPhone
    @chinvo 前端人员说 https 和 http 两种协议下,在 local 什么的本地存储中数据不能共用。
    chinvo
        25
    chinvo  
       May 10, 2018 via iPhone   ❤️ 1
    @yimaneilicj #24 那全跳去 https 啊
    owt5008137
        26
    owt5008137  
       May 10, 2018 via Android
    if ($scheme = https) {
    return 301 http://$server_name$request_uri;
    }
    pandago
        27
    pandago  
       May 10, 2018 via iPhone
    @yimaneilicj localstorage 跨域
    IvanLi127
        28
    IvanLi127  
       May 11, 2018 via Android
    @yimaneilicj 凉了 叫访问过的人都清理下浏览器吧。。。
    zhuweiyou
        29
    zhuweiyou  
       May 11, 2018
    开了 HSTS ?凉了。换域名吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1064 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 18:23 · PVG 02:23 · LAX 11:23 · JFK 14:23
    ♥ Do have faith in what you're doing.