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

关于 CF 的疑惑, https 强制要不要打开

  •  
  •   zijian · 2021-04-24 18:27:55 +08:00 · 6549 次点击
    这是一个创建于 1096 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的 CF 端对端加密选择的是 full,源站开了 http 强制转 https,那么 cf 这边还需要开“始终使用 HTTPS”与“自动 HTTPS 重写”这两个功能吗?我试着关了,好像也不影响正常访问,但是疑问来了,我关了这两个功能,端对端的全流程加密不就失效了吗?用户发起的 http 请求不就直接发到 cf 的 cdn 服务器上了?
    18 条回复    2021-04-26 18:12:54 +08:00
    ruixue
        1
    ruixue  
       2021-04-24 18:33:22 +08:00
    “始终使用 HTTPS”和直接在源站上配置 http 到 https 的 301 跳转效果是一样的
    “自动 HTTPS 重写”是把网页中的 http 链接自动替换成 https 的
    如果全站的 https 配置没问题,建议都打开就行了
    zijian
        2
    zijian  
    OP
       2021-04-24 18:36:16 +08:00
    @ruixue 好快的回复!但是“始终使用 HTTPS”这个功能是作用于哪个环节呢?
    ruixue
        3
    ruixue  
       2021-04-24 18:39:57 +08:00
    @zijian 就是用户通过 http 访问你的网站时,cloudflare 不管你的源站是怎么配置的,直接返回跳转到 https 的 301 状态码
    zijian
        4
    zijian  
    OP
       2021-04-24 18:45:16 +08:00
    @ruixue ok,但是我的源站就有 https,那这样不就是造成了用户访问时间的延迟,毕竟中间经过了二次执行,而且我看 CloudFlare Help Center 有提到不建议源站做 https 强制,这可怎么好,我的源站必须要做,因为国内是直接访问,cf 这条线是给境外用户使用的
    ruixue
        5
    ruixue  
       2021-04-24 18:50:51 +08:00
    @zijian 打开“始终使用 HTTPS”后,用户通过 http 访问你的网站时,cloudflare 不会建立和源站的连接而是直接返回 301 到 https,然后用户再使用 https 访问你的网站时,根据你的回源配置,cloudflare 才会建立和源站的反向代理连接,如果是“灵活”那就是 http 回源,如果是“完全”那就是 https 回源
    不建议源站做 https 强制,是因为如果使用的是“灵活”配置,那么 cloudflare 只会发起和源站之间的 http 连接,然而你的源站做了 https 强制跳转,会导致无法成功建立连接,使用的“完全”配置则无需担心这个问题
    zijian
        6
    zijian  
    OP
       2021-04-24 20:02:49 +08:00
    @ruixue 如果我选择关闭“始终使用 HTTPS”这个功能,说明用户可以通过 http 申请访问我的网站,此时 cf 会带着 http 向源站发起请求,源站将 http 转成 https 进行回应,又转回 cf,cf 带着 https 反馈给用户,是这样么?

    但是这个流程和我当前选择的 full 模式好像是不一致的吧,full 模式是不是要求这一个来回都是 https 加密的?
    zijian
        7
    zijian  
    OP
       2021-04-24 20:03:57 +08:00
    我一直以为选择 full 模式要求“始终使用 HTTPS”这一项必须得开着呢
    zijian
        8
    zijian  
    OP
       2021-04-24 20:11:47 +08:00
    可不可以这样理解,full 模式只是对 用户到 cf,或者 cf 到源站之间的证书安全进行控制,而 https 又是另外一回事了,https 大于 cert 这个概念
    opengps
        9
    opengps  
       2021-04-24 22:44:10 +08:00
    就近从 CF 处吧 http 转为 https 省事很多,这样你源站只需要开启一个端口就够用。甚至说为了有些提速,你在 CF 以外用 https (含 http 跳转 https ),CF 到源站用 http
    chinvo
        10
    chinvo  
       2021-04-24 23:14:47 +08:00
    full 是用户到 cf cf 到源站 都 https

    hsts 和 http 的 301 是用户到 cf
    dzdh
        11
    dzdh  
       2021-04-24 23:39:52 +08:00
    cf 跳转和你的服务器自己跳转是两回事。

    我觉得用 CF 有一个『隐藏服务器 IP 』的目的在。

    其次,你怎么做到用 CF 的同时能让 HTTP 和 HTTPS 走两条线路的?
    ruixue
        12
    ruixue  
       2021-04-25 00:14:56 +08:00   ❤️ 2
    @zijian 并不是,full 模式就是 https 回源,即使用户使用 http 和 cf 建立连接,cf 也会通过 https 回源

    也就是说:

    flexible+关闭“始终使用 HTTPS”,那么用户可以和 cf 使用 http 或 https 连接,而 cf 和源站使用 http 连接

    flexible+打开“始终使用 HTTPS”,那么用户只和 cf 使用 https 连接,而 cf 和源站使用 http 连接

    full+关闭“始终使用 HTTPS”,那么用户可以和 cf 使用 http 或 https 连接,而 cf 和源站使用 https 连接

    full+打开“始终使用 HTTPS”,那么用户只和 cf 使用 https 连接,cf 和源站使用 https 连接

    简而言之,flexible 、full 是控制 cf 回源用的协议,“始终使用 HTTPS”是控制是否强制用户使用 https 访问 cf

    我之前可能有一点没有说清楚,“始终使用 HTTPS”和直接在源站上配置 http 到 https 的 301 跳转效果是一样的,后面半句话的背景是用户直接访问你的源站,获得了 301 跳转状态码。如果你希望访问 cf 的用户都能自动跳转 https,那么就需要把“始终使用 HTTPS”打开
    oott123
        13
    oott123  
       2021-04-25 01:23:44 +08:00 via Android   ❤️ 2
    楼上说得不对,不管你用如何设置,用户 http 访问就是 http 回源,除非 CF 或者你把用户跳到了 https 上

    flexible 和 full 只决定用户用 https 时,走 http 回源还是走 https 回源
    alexkkaa
        14
    alexkkaa  
       2021-04-25 08:15:50 +08:00 via Android
    必须啊 cf 现在已经全局 http3 了 前两年 chrome 就已经把非 https 的网站红标警告了,你是用的国产浏览器还是老版本 chrome ?
    zijian
        15
    zijian  
    OP
       2021-04-25 09:12:43 +08:00 via iPhone
    @ruixue 好的,我明白您的意思了,感谢🙏
    ruixue
        16
    ruixue  
       2021-04-25 09:45:05 +08:00   ❤️ 1
    @oott123 试了下确实如此,是我之前说错了,谢谢指正

    @zijian 抱歉,前面我说的不对,full 模式并不是强制 https 回源,而是在用户使用 https 时,保证回源也使用 https 。也就是说如果关闭“始终使用 HTTPS”,那么设置为 full 时,用户和 cf 使用 http 连接,cf 和源站也使用 http 连接,用户和 cf 使用 https 连接,cf 和源站也使用 https 连接
    zmsky
        17
    zmsky  
       2021-04-26 13:51:35 +08:00
    想问一下如何做到国内直接访问,不同的域名么?
    humxman
        18
    humxman  
       2021-04-26 18:12:54 +08:00
    如果想用户只输入域名在不经过跳转的情况下直接访问 HTTPS,你需要加入 HSTS 头部信息。并且在下面的网站添加自己的域名到预加载例表。
    https://hstspreload.org/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3296 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:11 · PVG 20:11 · LAX 05:11 · JFK 08:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.