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

2020 年了,你的网站支持 http2 了么

  •  1
     
  •   robolwq · 2019-12-31 21:26:53 +08:00 · 11288 次点击
    这是一个创建于 1795 天前的主题,其中的信息可能已经有所发展或是发生改变。

    HTTP2 规范( RFC7540 )在 2015 年发布,即将迈入第 5 个年头,你的网站有没有支持呢?给大家普及下 HTTP2 一些基本概念和开启方式:

    https://davidlovezoe.club/wordpress/archives/663

    64 条回复    2020-03-05 18:26:35 +08:00
    yhxx
        1
    yhxx  
       2019-12-31 21:28:23 +08:00   ❤️ 7
    2020 年了,该上 HTTP3 了,TLS1.2 也该干掉了
    unicloud
        2
    unicloud  
       2019-12-31 21:32:09 +08:00 via iPhone   ❤️ 1
    确实该普及下了,正好最近写了个检查网站是否开启 HTTP/2 的在线工具: https://www.dute.org/http2
    Love4Taylor
        3
    Love4Taylor  
       2019-12-31 21:32:38 +08:00
    HTTP/3 都支持了.
    bclerdx
        4
    bclerdx  
       2019-12-31 22:14:02 +08:00
    @unicloud 不错的在线检测工具。那么问题来了,如果检测网站的 URL 支持 HTTP/2 的话,那能说明什么呢?能代表这个网站有什么优秀的地方?
    robolwq
        5
    robolwq  
    OP
       2019-12-31 22:22:14 +08:00
    @bclerdx 理论上,如果用现代浏览器访问支持 http2 的网站,加载会比 http1.x 更快些
    luozic
        6
    luozic  
       2019-12-31 22:48:03 +08:00 via iPhone
    http2/http3 传输的是二进制数据,并且有复用连接的设计。http2/http1.1 都是 tcp 的,http3 基于 udp。
    id7368
        7
    id7368  
       2019-12-31 22:50:06 +08:00 via iPhone
    都上 QUIC 了
    wangyzj
        8
    wangyzj  
       2019-12-31 22:56:59 +08:00
    该 3 了吧
    bclerdx
        9
    bclerdx  
       2019-12-31 23:42:28 +08:00
    @luozic 网络爆料,HTTP/1.1 也有使用多路复用技术哦。
    bclerdx
        10
    bclerdx  
       2019-12-31 23:43:13 +08:00
    @wangyzj H2 都还没完美普及呢,H3 还要往后排了。
    luozic
        11
    luozic  
       2019-12-31 23:59:49 +08:00 via iPhone
    @bclerdx http/1.1 和 http 的 stream 多路复用是一会事?
    zeocax
        12
    zeocax  
       2020-01-01 00:15:51 +08:00 via Android
    @bclerdx “网络爆料”可还行
    weiruanniubi
        13
    weiruanniubi  
       2020-01-01 09:17:28 +08:00 via Android
    应该是 QUIC+TLSv1.3
    zuokanyunqishi
        14
    zuokanyunqishi  
       2020-01-01 11:17:51 +08:00 via Android
    h2/tls1.3
    dyy1997
        15
    dyy1997  
       2020-01-01 11:38:20 +08:00
    昨晚连夜给 nas 登录页面加了 HTTP/3
    marcushbs
        16
    marcushbs  
       2020-01-01 11:42:02 +08:00
    我的 CDN 支持就行了
    slyang5
        17
    slyang5  
       2020-01-01 12:53:54 +08:00
    http3 马上出来了 http2 设计本身存在缺陷
    azh7138m
        18
    azh7138m  
       2020-01-01 12:59:02 +08:00 via Android
    国内 UDP 感人,我看我们项目 QUIC 错误有万五,比 HTTP/2 高不少。
    pmispig
        19
    pmispig  
       2020-01-01 13:25:13 +08:00
    暂时不打算支持,很多安卓 APP 的老的基础库不支持 http2
    jinliming2
        20
    jinliming2  
       2020-01-01 13:51:27 +08:00 via iPhone
    @weiruanniubi QUIC 是 h3 的试验品,就类似于 SPDY 和 h2 的关系差不多,现在 h3 标准出了,QUIC 之前的实验版本就都过时了
    jinliming2
        21
    jinliming2  
       2020-01-01 13:54:24 +08:00 via iPhone
    @pmispig 高版本 HTTP 都是向下兼容的,就算是你部署了 HTTP/3,不支持的用户仍旧可以使用 HTTP/2 或是 HTTP/1.1 (只要你不主动禁用低版本就行)。
    不能因为部分用户使用旧库不支持新技术,你就拉着大批使用新设备的用户也体验不到新技术啊……
    sobigfish
        22
    sobigfish  
       2020-01-01 13:57:47 +08:00
    @jinliming2 他这是为了少数"用户"在“惩罚”大多数用户
    wnanbei
        23
    wnanbei  
       2020-01-01 14:56:17 +08:00
    H2 的设计能有哪些新的应用方式呢?除了能加快加载速度以外
    kile
        24
    kile  
       2020-01-01 15:28:37 +08:00
    @unicloud 国内有哪些大型网站开启 h2 了?
    kile
        25
    kile  
       2020-01-01 15:28:58 +08:00
    我测试半天只测出一个淘宝....
    puilu
        26
    puilu  
       2020-01-01 15:31:49 +08:00
    证书花钱。。。个人续费证书很贵啊
    docx
        27
    docx  
       2020-01-01 15:48:29 +08:00 via iPhone
    @puilu 现在免费证书一大把,当然如果你非得认为付费证书才是证书那么当我没说
    puilu
        28
    puilu  
       2020-01-01 16:10:10 +08:00
    @dzyou2007 第二年又到处找免费的,没啥意思
    Vhc001
        29
    Vhc001  
       2020-01-01 16:10:30 +08:00
    楼主,HTTP/2 的官方正式缩写是 h2,不是 HTTP2
    steley
        30
    steley  
       2020-01-01 16:15:13 +08:00
    昨天一顿折腾,终于也用上了 HTTP/2
    Vhc001
        31
    Vhc001  
       2020-01-01 16:16:06 +08:00   ❤️ 1
    看了下面的回帖,大多都被楼主带歪了
    http/2、http/3 ✔
    h2、h3 ✔
    http2、http3 ✘
    ayase252
        32
    ayase252  
       2020-01-01 16:18:40 +08:00
    cdn 默认 HTTP/2,找机会上 HTTP/3
    wanguorui123
        33
    wanguorui123  
       2020-01-01 17:01:22 +08:00 via iPhone
    反向代理啥协议都可以支持
    richangfan
        34
    richangfan  
       2020-01-01 17:09:31 +08:00 via Android
    做的两个项目都上了
    turan12
        35
    turan12  
       2020-01-01 17:11:05 +08:00 via iPhone
    @kile #24 QQ 邮箱
    bigtan
        36
    bigtan  
       2020-01-01 18:03:16 +08:00 via Android
    https://estan.cn caddy 做前端,PHP7.1 后端 WordPress HTTP2 早都支持了
    404error
        37
    404error  
       2020-01-01 18:16:24 +08:00 via iPad
    我是套 cloudflare 实现的 http/3,nginx 1.17.6 只弄了 http/2 + tls v1.3 + 0rtt,萌新不知道 http/3 怎么搞
    noobma
        38
    noobma  
       2020-01-01 18:27:31 +08:00
    说到 http/2,小弟有个问题,大佬们都是在 nginx 那里启用 http/2 就行了吗?后端服务需要启用 http/2 吗?如果后端服务也启用的话带来的性能提升大吗?
    jinliming2
        39
    jinliming2  
       2020-01-01 18:29:42 +08:00 via iPhone   ❤️ 1
    @puilu 免费证书 let's encrypt 已经普及多久了,几乎所有浏览器都信任……
    Vhc001
        41
    Vhc001  
       2020-01-01 18:40:44 +08:00   ❤️ 1
    @noobma #38

    server {
       listen 80;
       listen [::]:80;
       listen 443 ssl http2;
       listen [::]:443 ssl http2;
       server_name example.com;
    renyiqiu
        42
    renyiqiu  
       2020-01-01 18:46:27 +08:00
    有人说下 http/3 比 http/2 相比有啥优势么
    msg7086
        43
    msg7086  
       2020-01-01 18:46:31 +08:00   ❤️ 2
    @puilu 不知道你活在哪年,不过 LE 的免费证书也已经是五年前开始的事了。
    lostpg
        44
    lostpg  
       2020-01-01 18:55:01 +08:00 via Android   ❤️ 1
    @noobma nginx 的建议是后端使用 http 1.1 在网络条件良好的情况下 http 1.1 是最好的选择,后端用 h2 似乎还会有反效果。
    tt67wq
        45
    tt67wq  
       2020-01-01 19:16:24 +08:00
    这就要看 gayhub 啥时候支持了
    EXChen
        46
    EXChen  
       2020-01-01 19:31:36 +08:00
    @unicloud 你的工具感觉有点问题,输入我的网址出错了,最后在这个站点( https://myssl.com )检测的。
    EXChen
        47
    EXChen  
       2020-01-01 19:35:31 +08:00
    我的站点使用了阿里云的全站加速,直接支持到 HTTP2 了。
    luozic
        48
    luozic  
       2020-01-01 21:34:12 +08:00 via iPhone
    @lostpg nginx 完整的支持 http stream 的版本得收费套件。
    404error
        49
    404error  
       2020-01-01 21:38:57 +08:00
    @Love4Taylor 谢谢大佬>.<
    我看了你的博客后,才知道你原来写过相关的教程啊!
    yafoo
        50
    yafoo  
       2020-01-01 21:45:50 +08:00 via Android
    没有 http2,网站都不好意思上线
    sleepm
        51
    sleepm  
       2020-01-01 22:31:26 +08:00 via Android
    h5 情何以堪
    kirbykfc
        52
    kirbykfc  
       2020-01-01 22:31:50 +08:00   ❤️ 1
    @noobma nginx 也只能启用 nginx 端的 h2 了,后端不能启用,因为 nginx 不支持 h2 反代且以后也不会支持。如果想在后端启用 h2,可以使用 haproxy。
    BFDZ
        53
    BFDZ  
       2020-01-01 23:22:37 +08:00
    http/2 早就支持了,还启用了 TLS1.3
    uqf0663
        54
    uqf0663  
       2020-01-02 00:40:46 +08:00 via Android
    微信小程序 ios 不支持 http2,安卓正常,脑壳疼
    conn4575
        55
    conn4575  
       2020-01-02 00:48:44 +08:00 via Android
    有一个问题,h2 不是支持服务端推送吗?如果光 nginx 开启 h2,服务端不开的话应该也用不了吧
    hifumi
        56
    hifumi  
       2020-01-02 08:42:35 +08:00   ❤️ 1
    @puilu Let's Encrypt 是永久免费的啊, 而且有官方提供的自动续期脚本
    xenme
        57
    xenme  
       2020-01-02 09:28:30 +08:00 via iPhone
    还不支持 https
    unicloud
        58
    unicloud  
       2020-01-02 11:02:12 +08:00
    @kile 根据我的测试,目前国内支持 HTTP/2 的大型网站有:

    - qq.com
    - taobao.com
    - tmall.com
    - jd.com
    - sina.com.cn
    - sohu.com
    - toutiao.com
    - douyin.com

    让人意外的是,baidu.comweibo.com 竟然都不支持 HTTP/2。

    另外,同一网站,使用 http 协议和 https 协议,测试结果有可能是不一样的,比如: https://www.163.com 是支持 HTTP/2 的,但是 http://www.163.com 就不支持。
    ceet
        59
    ceet  
       2020-01-02 14:49:19 +08:00
    支持 QUIC 一年多了
    129ykx733D016U2n
        60
    129ykx733D016U2n  
       2020-01-02 16:32:33 +08:00
    博客已支持 HTTP/2 https://imoegirl.com
    jinliming2
        61
    jinliming2  
       2020-01-02 21:07:34 +08:00 via iPhone
    @unicloud HTTP 下不支持 h2 是因为浏览器强制要求的,主流浏览器都拒绝实现 HTTP 协议下的 h2c,只实现了 HTTPS 下的 h2。
    所以你用 HTTP 访问的时候就只能是 HTTP/1.1
    pmispig
        62
    pmispig  
       2020-01-03 09:07:56 +08:00
    @jinliming2 之前开启过 http/2 因为安卓客户端的底层库版本低,所以一直有问题,后来我就不打算趟这种雷了,没什么好处
    jinliming2
        63
    jinliming2  
       2020-01-04 00:50:31 +08:00 via iPhone
    @pmispig 根据 h2 的协议升级方式,只有客户端主动告知服务器客户端支持 h2 的时候,服务端才会采用 h2 与客户端进行通信,否则将自动降级使用 HTTP/1.1。

    也就是说,如果客户端使用的是旧版本类库,不支持 h2,那么在请求服务器的时候就不会带有任何 h2 相关信息,服务端也就知道客户端不支持 h2,理应使用 HTTP/1.1 进行响应,以兼容旧设备。
    而如果客户端支持 h2,按照标准,在进行 TLS 握手的时候,客户端会主动在 TLS 扩展中自动添加 h2 关键字,告诉服务器这个客户端支持 h2,服务器在响应的时候就可以同意使用 h2 进行响应了。

    所以,根据 h2 的协商原理,如果客户端不支持的话,那么对客户端是完全无感知,直接兼容使用 HTTP/1.1 的,除非是做了某些错误的配置(比如在服务端禁用了 HTTP/1.1 )。

    当然,如果你遇到问题的解决方案就是逃避问题的话,那当我没说……
    Jason1021
        64
    Jason1021  
       2020-03-05 18:26:35 +08:00
    @unicloud http 和 https 走的端口应该不一样,https 和 http2 走的是 443 端口
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2825 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:10 · PVG 15:10 · LAX 23:10 · JFK 02:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.