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

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

  •  
  •   miao · 2016-04-26 16:09:35 +08:00 · 16023 次点击
    这是一个创建于 3140 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我 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 条回复    2016-04-27 15:08:28 +08:00
    ivmm
        1
    ivmm  
       2016-04-26 16:14:37 +08:00   ❤️ 1
    怎样设置才能强制所有 https 重定向到 https

    应该是

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

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

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

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

    注意规则生效顺序 1 至 2
    mrjoel
        11
    mrjoel  
       2016-04-26 16:33:37 +08:00   ❤️ 1
    第二条 https :// 打错了。
    mrjoel
        12
    mrjoel  
       2016-04-26 16:37:33 +08:00   ❤️ 1
    以上效果是该域名所有链接使用 https

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

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

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

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