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

NGINX 如何强制 https 301 跳转到 https

  •  
  •   ErnieSauce · Oct 20, 2016 · 9794 views
    This topic created in 3668 days ago, the information mentioned may be changed or developed.
    使用 https 后网站上转载的优酷视频显示空白
    所以想取消掉 https
    但是百度已经收录了 https
    现在想把 https 强制跳转到 http
    百度了很多方法都重定向循环了
    19 replies  •  2016-10-22 00:00:42 +08:00
    qgy18
    qgy18
    Oct 20, 2016 via iPhone
    1
    你之前用 301 永久重定向把 http 跳往 https 了吧。
    浏览器会记住 301 跳转,所以你再从 https 跳到 http 就循环了。
    试试在 https 跳往 http 时加一个参数。
    ErnieSauce
    ErnieSauce
    OP
    Oct 20, 2016
    2
    @qgy18 浏览器记住的跳转清楚 cookie 后还会存在吗?我需要怎么修改
    ansheng
    ansheng
    Oct 20, 2016
    3
    晒下我的配置文件把,希望对你有帮助:
    ```nginx
    server {
    server_name blog.ansheng.me;
    listen 80;
    listen 443 ssl;

    set $rewriterule https;

    if ($scheme = https) {
    set $rewriterule "${rewriterule}7";
    }

    if ($host ~* ^blog.ansheng.me) {
    set $rewriterule "${rewriterule}8";
    }
    if ($rewriterule != "https78") {
    return 301 https://blog.ansheng.me$request_uri;
    break;
    }

    ssl_certificate /.../xxx.crt;
    ssl_certificate_key /.../xxx.key;
    ssl_trusted_certificate /.../xxx.crt;

    ......
    }
    ```
    xiujie_JIANG
    xiujie_JIANG
    Oct 20, 2016
    4
    rewrite ^ https://$server_name$request_uri? permanent;
    JJaicmkmy
    JJaicmkmy
    Oct 20, 2016 via iPhone
    5
    首先,你标题写错了。
    第二,优酷是可以用 HTTPS 引用的。你可以用 https 打开优酷,然后把播放器的地址复制下来。
    rainfox
    rainfox
    Oct 20, 2016
    6
    @JJaicmkmy , HTTPS 打不开优酷的吧!但是优酷确实是可以 https 引用的。地址: http://cloud.youku.com/tools/
    ErnieSauce
    ErnieSauce
    OP
    Oct 20, 2016
    7
    @JJaicmkmy https 也不支持手机端播放 所以不纠结这个问题 我想解决跳转的问题 大神会吗 *- -
    ErnieSauce
    ErnieSauce
    OP
    Oct 20, 2016
    8
    @ansheng 你这个是从 http 跳转到 https 吧? -
    rainfox
    rainfox
    Oct 20, 2016
    9
    @ErnieSauce 然而,优酷的 https 那个其实是支持手机播放的,亲测。
    MaiCong
    MaiCong
    Oct 20, 2016
    10
    if ($ssl_protocol = '') {
       return 301 https://$server_name$request_uri;
    }
    error_page 497 https://$server_name$request_uri;
    ErnieSauce
    ErnieSauce
    OP
    Oct 20, 2016
    11
    @rainfox 确实可以 你有用过 wordress 的视频插件吗
    xiaoz
    xiaoz
    Oct 20, 2016 via iPhone
    12
    ansheng
    ansheng
    Oct 20, 2016
    13
    @ErnieSauce 是的……
    happywowwow
    happywowwow
    Oct 20, 2016
    14
    if ($server_port = "80") {
    return 301 https://$host$request_uri;
    }

    最近写的. 因为没写 server_name 所以用了$host
    jqw1992
    jqw1992
    Oct 21, 2016
    15
    server {
    listen 80;
    server_name XXXX.com www.XXXX.com;
    rewrite ^/(.*) https://www.laba.me/$1 permanent;
    }
    msg7086
    msg7086
    Oct 21, 2016
    16
    @happywowwow
    @jqw1992
    @MaiCong
    @xiujie_JIANG
    看题要审题……?

    @ErnieSauce
    一定要重写成 http 的话,随便加一个无用参数应该就可以了。
    清 Cookie 是不会清访问缓存的。
    ErnieSauce
    ErnieSauce
    OP
    Oct 21, 2016
    17
    @msg7086 终于看到了一个明白人 - - 随便加一个参数是指?
    我在使用 if ($server_port = "80") {
    return 301 https://$host$request_uri;
    }
    这个的时候 只有首页会自动跳转到 https 请问该如何设置
    w99wen
    w99wen
    Oct 21, 2016
    18
    server {
    listen *:80;
    server_name git.w99wen.tk;
    server_tokens off; ## Don't show the nginx version number, a security best practice
    return 301 https://git.w99wen.tk:443$request_uri;
    access_log /var/log/gitlab/nginx/gitlab_access.log gitlab_access;
    error_log /var/log/gitlab/nginx/gitlab_error.log;
    }
    msg7086
    msg7086
    Oct 22, 2016
    19
    @ErnieSauce 一来别用 if ,二来调试的时候先用 302 做,没问题了再上 301 。
    做 https 跳转到 http ,试试
    rewrite ^(.*)$ http://example.com$1?http;
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2735 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 14:00 · PVG 22:00 · LAX 06:00 · JFK 09:00
    ♥ Do have faith in what you're doing.