miao
V2EX  ›  SSL

cloudflare 提供的免费 https 怎样设置才能强制所有 http 重定向到 https

  •  
  •   miao · Apr 26, 2016 · 17053 views
    This topic created in 3853 days ago, the information mentioned may be changed or developed.
    我 vps debian 安装的 amh.sh 4.2 版.

    Nginx 1.4.4
    MySQL 5.5.34
    PHP 5.3.27

    域名使用 cloudflare 免费版,
    请问如何 设置 cloudflare 或者自己 vps 的 Nginx 配置
    让一个域名, 如下三种形式
    http://example.com/*
    http://www.example.com/*
    https://example.com/*

    全部 301 跳转到 下面一种 url
    https://www.example.com/*

    试过了 下面代码进入死循环
    if ($scheme = http ) {
    return 301 https://$host$request_uri;
    }
    19 replies  •  2016-04-27 15:08:28 +08:00
    ivmm
    ivmm
    Apr 26, 2016❤️1
    1
    怎样设置才能强制所有 https 重定向到 https

    应该是

    怎样设置才能强制所有 http 重定向到 https

    吧
    crystom
    crystom
    Apr 26, 2016❤️1
    2
    if is evil
    miao
    miao
    OP
    Apr 26, 2016
    3
    @ivmm 是的. 已经修改
    miao
    miao
    OP
    Apr 26, 2016
    4
    @crystom what is it mean
    Pastsong
    Pastsong
    Apr 26, 2016❤️1
    5
    用 js 或者 meta refresh
    miao
    miao
    OP
    Apr 26, 2016
    6
    @Pastsong 这个不可取. 但是还是谢谢了
    Slienc7
    Slienc7
    Apr 26, 2016❤️1
    7
    CF 后台自带功能,说明文档里面也有。
    h404bi
    h404bi
    Apr 26, 2016❤️2
    8
    用 cloudflare 自带的 Page Rules 。
    kslr
    kslr
    Apr 26, 2016❤️1
    9
    我也想知道有没有办法可以在 cloudflare 上直接重定向到 HTTPS 上,因为刚刚我发现我家的 443 端口可以使用,服务器也已经在路上了
    wxunm60tAn8bODGs
    wxunm60tAn8bODGs
    Apr 26, 2016❤️1
    10
    1 、 http://*[your domain]/* Always use HTTPS

    2 、 htts://[your domain]/+ Forward URL 301/302

    TO:https://www.[your domain]/+

    注意规则生效顺序 1 至 2
    wxunm60tAn8bODGs
    wxunm60tAn8bODGs
    Apr 26, 2016❤️1
    11
    第二条 https :// 打错了。
    wxunm60tAn8bODGs
    wxunm60tAn8bODGs
    Apr 26, 2016❤️1
    12
    以上效果是该域名所有链接使用 https

    将裸域***.COM 定向到 www.***.COM ,包括***.COM 下所有目录
    alect
    alect
    Apr 26, 2016❤️1
    13
    除了上面说的方法还可以在自己的服务器上写规则跳转啊。。
    RewriteEngine on
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]
    miao
    miao
    OP
    Apr 26, 2016
    14
    @mrjoel @h404bi
    谢谢您二位, 我这样设置 是否是正确的? 目测我的站可以 301 跳转了.

    @h404bi 您的三条规则 打码太多了, 看不大清楚

    @alect 谢谢您, 我试了您的代码, 还是会无限 301 死循环, 因为我的 vps 没有加密

    意思是, 用户 https --> cloudflare --> http --> 我的 vps, 所以自己 vps 设置规则,总是无限 301 死循环
    h404bi
    h404bi
    Apr 26, 2016
    15
    @miao 每个人的需求不一样,规则就不同了,打码看不清没关系。
    你需要带 www 的 url ,先把 http://www.example.com/* 强制用 https (如果除了 www 子域其它也要的话就用 http://*.example.com/*)
    然后将 http://example.com/* 和 https://example.com/* 重定向到 https://www.example.com/$1 应该就可以了。
    oott123
    oott123
    Apr 26, 2016❤️1
    16
    if ( $http_x_forwarded_proto != 'https' ) {
    return 301 https://$host$request_uri;
    }
    此贴终结……
    Zohar
    Zohar
    Apr 26, 2016 via Android
    17
    本人小白,大神轻喷。
    https://www.iwch.me/archives/623.html
    JJaicmkmy
    JJaicmkmy
    Apr 26, 2016 via iPad❤️2
    18
    直接在 Cloudflare 开启 HSTS 即可,何必这么麻烦的跳转。
    miao
    miao
    OP
    Apr 27, 2016
    19
    @JJaicmkmy 开启了 HSTS , ssl 评分就到 A+了. 谢谢你
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2254 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 02:44 · PVG 10:44 · LAX 18:44 · JFK 21:44
    ♥ Do have faith in what you're doing.