精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在Nginx中啟用HTTP 3.0/QUIC支持

系統 Linux
本文主要講解一下如何在 Nginx 中開啟 HTTP3.0 的支持。一起來看看吧。

 [[377426]]

在 Nginx 中支持 HTTP3.0 / QUIC

HTTP 3.0,也稱作 HTTP over QUIC。核心是 QUIC (讀音quick)協議,由 Google 在 2015 年提出的 SPDY v3 演化而來的新協議,傳統的 HTTP 協議是基于傳輸層 TCP 的協議,而 QUIC 是基于傳輸層 UDP 上的協議,可以定義成:HTTP3.0 基于 UDP 的安全可靠的 HTTP2.0 協議,主要有以下特性:

圖片來自Nginx官博

  •  基于 UDP 減少了 TCP 三次握手及 TLS 握手時間
  •  解決多路復用丟包時的線頭阻塞問題
  •  優化重傳策略
  •  流量控制
  •  連接遷移

本文主要講解一下如何在 Nginx 中開啟 HTTP3.0 的支持。

方案選擇

對于 HTTP3.0,由于整個協議還是處于草案階段,目前來說沒有一個完整的標準,所以各大瀏覽器廠商還只是在開發者版本中才會支持,例如 Chrome的金絲雀版本 Chrome Canary[1],并且各個服務器廠商也是在持續跟進中,對于 Nginx 來說,支持 HTTP3.0 目前有兩種方案可以選擇:

  •  基于 Cloudflare 的分支版本 Nginx:對于 HTTP3.0/QUIC,Cloudflare 始終走在了前列,借助于自家維護的開源項目 quic[2],從 Nginx 中拉出了一個分支來開發,并編譯出了對 HTTP 3.0 支持的 Nginx 服務器。
  •  Nginx 官方 Nginx-quic 項目:今年 6 月1 0 日,Nginx 官博[3]發布公告稱已經在研發支持 HTTP3.0/QUIC 協議的工作,目前項目維護在 nginx-quic[4],該項目和基于 Cloudflare 基于 Nginx 的分支并無關系,算是相對于正統的方案。

基于此,本文將會以部署 nginx-quic 的方式來讓 Nginx 支持 HTTP3.0/QUIC。

改造過程

我們最終的目的是得到 nginx-quic 版本的 nginx 可執行文件,需要經過一系列的安裝和編譯,期間可能會遇到很多問題,如果各位讀者不想實際操作,可以直接用我編譯好的版本 nginx-quic.linux-x86_64.zip 傳送門[5]。

準備工作:

以 centos7 為例,下載 nginx-quic 源碼傳送門[6],下載完成之后,需要進行編譯安裝,由于 nginx-quic 依賴 boringSSL,所以還需下載 boringSSL 源碼傳送門[7],然后同樣需要編譯安裝 boringSSL,執行這些操作之前,需要在 linux 上安裝一些前置模塊,通過 yum 來安裝,執行以下命令: 

  1. sudo yum install build-essential mercurial psmisc lsb-release cmake golang libunwind-dev git libpcre3-dev zlib1g-dev 

什么是 boringSSL:

對于 Nginx 來說,在編譯時需要配置對于的 SSL 庫,不管是 HTTP3.0 還是 HTTP2.0,始終都要基于 HTTPS,而加密算法這塊主要有 OpenSSL來提供,而 BoringSSL 是谷歌創建的 OpenSSL 分支,用于支持 TLS1.3的 UDP 協議 0-RTT 數據傳輸的加密算法(可以理解成 TLS 1.3 是標準協議,BoringSSL 是實現工具),BoringSSL 的一些特性會在合適的時機同步給 OpenSSl。

編譯安裝 boringSSL: 

  1. cd boringssl-master/  
  2. mkdir build  
  3. cd build  
  4. cmake ../  
  5. make 

執行之后,可以在 build/crypto,和 build/ssl下獲得對應的文件,如下圖:

注意編譯安裝 boringSSL 需要使用 cmake3 以上的版本。

編譯安裝 nginx-quic: 

  1. cd nginx-quic/  
  2. ./auto/configure --prefix=/root/nginx --with-http_ssl_module --with-http_v2_module --with-http_v3_module --with-cc-opt="-I../boringssl-master/include" --with-ld-opt="-L../boringssl-master/build/ssl -L../boringssl-master/build/crypto" 
  3. make   
  4. make install 

執行命令之后,會在/root/nginx目錄下生成對應的 nginx 可執行文件,如下圖:

 

其中,配置文件在conf/下,nginx命令在sbin/目錄下。

修改配置文件,啟動 nginx: 

  1. vi /root/nginx/conf/nginx.conf 

添加 http3 配置: 

  1. server {  
  2.     listen 443 ssl http2;              # TCP listener for HTTP/2  
  3.     listen 443 http3 reuseport;  # UDP listener for QUIC+HTTP/3  
  4.     ssl_protocols       TLSv1.3; # QUIC requires TLS 1.3  
  5.     ssl_certificate     ssl/www.example.com.crt;  
  6.     ssl_certificate_key ssl/www.example.com.key;  
  7.     add_header Alt-Svc 'quic=":443"h3-27=":443";h3-25=":443"h3-T050=":443"h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"h3-Q046=":443"h3-Q043=":443"'; # Advertise that QUIC is available 
  8.  

其中,要求使用 TLSv1.3 版本,并且當瀏覽器不支持 http3 時,可以選擇 http2。另外,add_header Alt-Svc添加這個返回頭不可缺少。

  •  Alt-Svc 全稱為 “Alternative-Service”,直譯為“備選服務”。該頭部列舉了當前站點備選的訪問方式列表,讓服務器可以告訴客戶端 “看,我在這個主機的這個端口用這個協議提供相同的服務”。一般用于在提供 “QUIC” 等新興協議支持的同時,實現向下兼容。參考 MDN[8]。

驗證 HTTP3 生效:

由于目前瀏覽器對HTTP3.0/QUIC的支持性有限,可以通過 http3check.net/[9] 來驗證站點啟用HTTP3是否成功,以我的站點為例:

坑點總結

整個過程看似很簡單,但是真正配置過程中遇到了不少坑,前前后后加上搜索問題花了一天半的時間才真正解決,把這些問題記錄下來,分享給大家。

開啟 UDP 的 443 端口:

由于 quic 協議使用的是 UDP 的 443 端口,這個端口對于 centos7 來說是默認關閉的,可以采用下面命令開啟: 

  1. firewall-cmd --zone=public --add-port=443/udp --permanent 

如果項目托管在阿里云上,需要更新 ECS 的安全組策略來對外開啟對應的協議和端口,如下圖:

TLS 版本向下兼容:

由于使用了 TLS 1.3,所以會修改對應加密算法,但是對于一些瀏覽器而言還不支持這么高的版本,尤其是對于蘋果的 Safari,所以,在配置 nginx 配置文件時,要多配置幾個版本向下兼容,代碼如下:

  1. ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 

-Werror 錯誤問題:

在編譯 nginx-quic 時,有時會遇到如下錯誤: 

  1. cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I../boringssl-master/include -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ 
  2.  -o objs/src/os/unix/ngx_linux_sendfile_chain.o \  
  3.  src/os/unix/ngx_linux_sendfile_chain.c  
  4. cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I../boringssl-master/include -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ 
  5.  -o objs/src/event/ngx_event_openssl.o \  
  6.  src/event/ngx_event_openssl.c  
  7. cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I../boringssl-master/include -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ 
  8.  -o objs/src/event/ngx_event_openssl_stapling.o \  
  9.  src/event/ngx_event_openssl_stapling.c  
  10. cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I../boringssl-master/include -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ 
  11.   -o objs/src/event/ngx_event_quic.o \  
  12.  src/event/ngx_event_quic.c  
  13. cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I../boringssl-master/include -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ 
  14.   -o objs/src/event/ngx_event_quic_transport.o \  
  15.  src/event/ngx_event_quic_transport.c  
  16. src/event/ngx_event_quic_transport.c: In function ‘ngx_quic_create_stream’:  
  17. src/event/ngx_event_quic_transport.c:54:9: error: comparison is always true due to limited range of data type [-Werror=type-limits]  
  18.       : ((uint32_t) value) <= 16383 ? 2                                       \  
  19.          ^  
  20. src/event/ngx_event_quic_transport.c:1299:15: note: in expansion of macro ‘ngx_quic_varint_len’  
  21.          len = ngx_quic_varint_len(sf->type);  
  22.                ^  
  23. cc1: all warnings being treated as errors  
  24. make[1]: *** [objs/src/event/ngx_event_quic_transport.o] Error 1  
  25. make[1]: Leaving directory `/root/nginx-quic'  
  26. make: *** [build] Error 2  
  27. [root@iz2zehmi1ztqtx8tg6ca7gz nginx-quic]# 

解決辦法是: 

  1. cd nginx-quic\objs  
  2. vi Makefile 

找到 CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I../boringssl-master/include將 -Werror 參數去掉。

reuseport 只需配置一次:

假如有多個域名需要開啟 http3,則 reuseport 建議只在根域名上配置,如果一個配置文件中出現多個 reuseport,會報錯,配置如下: 

  1. server {          
  2.       listen 443 ssl http2;              # TCP listener for HTTP/2  
  3.       listen 443 http3 reuseport;  # UDP listener for QUIC+HTTP/3  
  4.       server_name  www.nihaoshijie.com.cn default_server;  
  5.   }  
  6.   server {  
  7.       listen 443 ssl http2;        # TCP listener for HTTP/2  
  8.       listen 443 http3;  # UDP listener for QUIC+HTTP/3  
  9.       server_name  app.nihaoshijie.com.cn; 
  10.   } 

編譯安裝時的性能問題:

如果編譯安裝時報類似下面的錯誤,可能是主機的內容不足,需要關閉一些運行的程序來往下進行。 

  1. ...  
  2. c++: internal compiler error: Killed (program cc1plus) 

快開啟你的 HTTP3 之旅吧! 

 

責任編輯:龐桂玉 來源: 奇妙的Linux世界
相關推薦

2021-04-19 10:05:37

MozillaHTTPWeb服務器

2017-03-02 09:40:28

UbuntuCentOSNginx

2022-10-21 10:31:36

Arch LinuxSnap

2024-05-30 17:43:38

2021-12-15 11:46:46

HTTP2Nginx

2024-11-26 08:09:40

2018-04-09 09:45:09

Windows 10休眠

2019-04-22 11:50:38

LinuxFlatpak

2020-12-07 13:23:07

LibreOffice開源

2022-06-17 16:38:07

MozillaFirefoxcookie

2019-07-31 10:36:38

FirefoxDNS-over-HT瀏覽器

2019-12-11 10:20:13

Windows 10鼠標指針Windows

2022-09-16 07:33:52

瀏覽器深色模式Firefox

2019-07-19 09:12:50

Windows 10平板電腦模式Windows

2022-11-25 10:19:48

2016-08-29 21:36:55

nginxWeb緩存

2018-11-27 15:00:05

AnboxGoogle PlayARM

2025-02-04 09:58:08

2022-05-20 13:46:36

Linux激活Linux水印

2016-12-16 09:23:29

LinuxShell腳本
點贊
收藏

51CTO技術棧公眾號

亚洲免费福利一区| 婷婷在线观看视频| 欧美视频免费| 这里只有精品电影| 2019日韩中文字幕mv| 男人天堂网在线视频| 日韩av高清在线观看| 精品国产一区二区三区在线观看 | 婷婷亚洲精品| 欧美日韩一二三区| 精品视频在线观看一区| 在线观看av黄网站永久| 福利视频网站一区二区三区| 日韩av片免费在线观看| 九九热最新地址| 色婷婷狠狠五月综合天色拍| 欧美电影一区二区三区| 91九色在线观看视频| 美女写真理伦片在线看| 久久久久久99久久久精品网站| 91亚洲精品久久久久久久久久久久| 国产亚洲精品91在线| av网站手机在线观看| 川上优的av在线一区二区| 成人激情免费网站| 91精品国产自产在线观看永久| 精品一区在线视频| 99久久99热这里只有精品| 日韩激情第一页| 在线观看一区二区三区视频| 蜜桃视频成人m3u8| 亚洲国产日韩综合久久精品| 一本一道久久a久久精品综合 | 欧美精品一区二区三区蜜桃 | 97久久香蕉国产线看观看| 亚洲精品福利视频网站| 亚洲欧美日韩综合一区| 十九岁完整版在线观看好看云免费| 国模无码大尺度一区二区三区| 人妖精品videosex性欧美| 久久精品国产亚洲av香蕉| 欧美成人一区二免费视频软件| 一区二区三区视频在线| 精品少妇一区二区三区免费观| 1769国产精品视频| 欧美一区二区三区系列电影| 色噜噜狠狠永久免费| 成人啊v在线| 日本久久一区二区| 久久免费视频3| 国产在线精彩视频| 亚洲第一av色| 青青青青草视频| 国产理论电影在线| 一区二区免费视频| 91成人综合网| 国产乱码在线| 欧美丝袜一区二区三区| 久久精品国产精品亚洲色婷婷| 福利成人导航| 五月天中文字幕一区二区| 国产成人永久免费视频| 国产深夜视频在线观看| 午夜电影网一区| 久久久999视频| 一区二区三区短视频| 黑人巨大精品欧美一区二区免费| 国产极品尤物在线| 日韩精品极品| 欧美自拍偷拍午夜视频| 看看黄色一级片| 免费一级欧美在线大片| 精品91自产拍在线观看一区| 亚洲精品中文字幕在线播放| 中文字幕精品影院| 在线国产精品播放| 一区二区国产精品精华液| 欧美激情一级片一区二区| 久久全球大尺度高清视频| 日韩精品人妻中文字幕| 性欧美videos另类喷潮| 欧美在线视频日韩| 另类少妇人与禽zozz0性伦| 网爆门在线观看| 午夜欧美精品| 热久久视久久精品18亚洲精品| 波多野结衣绝顶大高潮| 国产一区二三区| 国产一区二区在线观看免费播放| 可以在线观看的av| 中文字幕色av一区二区三区| 日韩精品免费一区| 天堂√8在线中文| 欧美日韩一区 二区 三区 久久精品| 999久久久精品视频| 精品国产午夜肉伦伦影院| 一区二区三区国产在线观看| 妺妺窝人体色www聚色窝仙踪 | 超碰影院在线观看| 国产精品久久久久久久久久辛辛 | 亚洲国产精品视频| 成人一区二区三| 伊人久久大香线蕉av超碰| 精品亚洲一区二区| 久久久久亚洲av片无码| 国产日产高清欧美一区二区三区| 国产综合香蕉五月婷在线| 神马午夜在线观看| 中文字幕制服丝袜一区二区三区 | 日韩欧美国产综合| 精品无码在线观看| 激情综合电影网| 国产精品偷伦一区二区| 香蕉视频国产在线| 亚洲精品乱码久久久久久久久| 久久精品视频91| 国产精品对白| 久久九九精品99国产精品| 西西44rtwww国产精品| 国产一区二区三区香蕉| 日本亚洲欧洲精品| 1234区中文字幕在线观看| 欧美精品日韩一本| 久久久久久久毛片| 亚洲精品资源| 97视频资源在线观看| 成人精品福利| 色悠悠亚洲一区二区| 任你躁av一区二区三区| 国产精品久久占久久| 日本亚洲欧洲色α| 午夜精品久久久久久久99黑人| 高清无码视频直接看| 99久久久国产精品免费调教网站| 亚洲精品国产欧美| 久久精品美女视频| 国产成人鲁色资源国产91色综| 亚洲精品一区二区三区av| 在线观看的黄色| 欧美精品一区二区精品网| 黄视频网站免费看| 久久超碰97中文字幕| 亚洲国产精品日韩| 国精产品一区一区三区四川| 亚洲区中文字幕| 久久国产黄色片| 97精品国产97久久久久久久久久久久 | 日韩中文字幕久久| a片在线免费观看| 久久九九影视网| 37pao成人国产永久免费视频| 日本国产精品| 欧美中文字幕精品| 牛牛澡牛牛爽一区二区| 色综合天天综合网国产成人综合天| 色婷婷免费视频| 夜夜嗨一区二区| 久久精品日产第一区二区三区乱码| 国产777精品精品热热热一区二区| 精品日韩一区二区三区免费视频| 精品肉丝脚一区二区三区| 快射av在线播放一区| 91老司机福利 在线| 日本wwww视频| 国产麻豆精品久久| 国产精品免费视频xxxx| 日本在线播放| 日韩欧美专区在线| 日韩无码精品一区二区三区| av一区二区久久| 成人综合视频在线| 国产成人调教视频在线观看| 国产精品久久久久久久av大片| 男人和女人做事情在线视频网站免费观看 | 国产麻豆视频精品| 激情五月六月婷婷| 日本在线中文字幕一区| 国产97在线亚洲| 淫片在线观看| 精品欧美久久久| 好看的av在线| 国产精品乱码一区二三区小蝌蚪| av观看免费在线| 水蜜桃久久夜色精品一区| 成人欧美一区二区三区在线湿哒哒 | 欧美2区3区4区| 午夜精品久久久久久久白皮肤| 精品亚洲成a人片在线观看| 欧美区一区二区三区| 久久久久久久久久久97| 久久综合色综合88| 一起操在线视频| 99综合精品| 在线日韩av永久免费观看| 成人偷拍自拍| 国产日韩欧美日韩大片| 久久国产精品黑丝| 亚洲欧美中文另类| 亚洲av综合色区无码一二三区| 日韩欧美精品免费在线| 四虎永久免费在线| 久久精品免视看| 韩国三级hd中文字幕有哪些| 国产精品美女久久久| 男女h黄动漫啪啪无遮挡软件| 西野翔中文久久精品字幕| 91久久在线视频| xx欧美视频| 久久久久久国产精品三级玉女聊斋| 黄上黄在线观看| 亚洲成人aaa| 91麻豆一区二区| 在线亚洲一区观看| 日本三级午夜理伦三级三| 成人免费一区二区三区在线观看| 日本黄色录像片| 国产精品影音先锋| 岛国毛片在线播放| 另类av一区二区| 日本国产中文字幕| 国产精品99久久精品| 色女孩综合网| 性欧美xxxx免费岛国不卡电影| 99re在线播放| 91视频成人| 国产区精品视频| 日日av拍夜夜添久久免费| 亚洲2020天天堂在线观看| av在线播放国产| 久久精品最新地址| 免费在线看黄| 中文字幕精品在线视频| 黄色视屏网站在线免费观看| 日韩h在线观看| 农村少妇久久久久久久| 91精品国产高清一区二区三区| 中文字幕一区2区3区| 日本丰满少妇一区二区三区| 欧美特黄aaaaaa| 精品毛片网大全| 一级aaa毛片| 亚洲v中文字幕| 激情综合网五月婷婷| 亚洲一卡二卡三卡四卡无卡久久| 好吊色视频在线观看| 亚洲色大成网站www久久九九| 日本成人免费在线观看 | 性色av无码久久一区二区三区| 国产精品午夜春色av| 极品尤物一区二区| 亚洲国产高清不卡| 日韩欧美在线视频播放| 中文乱码免费一区二区| 女人裸体性做爰全过| 国产精品乱人伦中文| 91n在线视频| 日韩毛片视频在线看| 顶臀精品视频www| 一区二区三区不卡视频在线观看| 麻豆精品一区二区三区视频| 亚洲精品综合在线| 欧美激情一区二区视频| 亚洲国产欧美在线| 免费看日韩毛片| 色综合夜色一区| 在线视频 中文字幕| 欧美精品成人一区二区三区四区| 97超碰人人草| 欧美变态tickle挠乳网站| 丰满人妻一区二区三区免费视频| 亚洲成人教育av| 免费观看成年在线视频网站| 中文字幕一精品亚洲无线一区 | www.99视频| 亚洲成人激情图| 国产精品麻豆一区二区三区| 日韩中文av在线| 麻豆视频网站在线观看| 欧美极品第一页| 亚洲欧美se| 欧美性受xxxx白人性爽| 成人国产一区| 国产91精品入口17c| 亚洲激情播播| 亚洲资源在线网| 一区福利视频| xxxx一级片| 国产成人免费视频精品含羞草妖精| 亚洲精品乱码久久久久久蜜桃图片| 久久久久久免费网| 免费精品在线视频| 精品欧美一区二区三区| 亚洲一级黄色大片| 精品国产伦一区二区三区免费| 国产中文字幕在线播放| 免费不卡欧美自拍视频| 一二三四视频在线中文| 91精品视频在线免费观看| 老司机精品在线| 懂色av一区二区三区四区五区| 亚洲黄页一区| 日本人69视频| 99久久综合精品| 久草视频手机在线| 色噜噜狠狠色综合欧洲selulu| 精品人妻伦一区二区三区久久| 亚洲免费av片| 欧美1234区| 国产日韩欧美在线观看| 亚洲人成网77777色在线播放| 久久久久久久久网| 日本系列欧美系列| 91丝袜在线观看| 亚洲精品自拍动漫在线| 久久久999久久久| 日韩av中文在线| 欧美午夜大胆人体| 91九色在线视频| 成人久久综合| 激情网站五月天| 99久久亚洲一区二区三区青草 | 亚洲a一区二区三区| 任你操这里只有精品| www.欧美.com| 久一区二区三区| 日韩一区二区三区视频在线| 成黄免费在线| 国产成人精品av在线| 理论片一区二区在线| 97碰在线视频| 国产成人在线视频免费播放| 国产三级精品三级观看| 欧美天天综合网| 岛国在线视频| 国产极品jizzhd欧美| 欧美有码在线| 免费观看美女裸体网站| 国产成a人亚洲| 成人免费毛片东京热| 91精品国产乱| 新版中文在线官网| 5566中文字幕一区二区| 1024精品久久久久久久久| 国产乱女淫av麻豆国产| 日本一区二区免费在线观看视频 | 登山的目的在线| 欧美色爱综合网| 在线免费观看黄色网址| 国产精品美女www爽爽爽视频| blacked蜜桃精品一区| 午夜精品在线免费观看| 欧美激情一区二区在线| 中文字幕日产av| 综合国产在线视频| 二区三区精品| 国产免费内射又粗又爽密桃视频| 欧美一级二级视频| 欧美成人精品高清在线播放| av在线免费网站| 都市激情久久久久久久久久久| 国产精品www994| 国产精品久久久久久在线观看| 亚洲一区二区五区| 无码国产精品96久久久久| 亲子乱一区二区三区电影| 国产一区二区电影在线观看| 色戒在线免费观看| 亚洲精品国产a久久久久久| 黄色一级a毛片| 日本国产精品视频| 日韩在线观看| 涩视频在线观看| 欧美性极品少妇精品网站| 成人在线播放视频| 亚洲自拍偷拍视频| 在线看片一区| 亚洲精品一区二区三区影院忠贞| 欧美三级资源在线| 亚洲国产精品精华素| 久久久久久高清| 久久精品国产99久久6| 欧美日韩人妻精品一区二区三区| 亚洲国产精品久久久久久| 精品91久久| 日本一二三区视频在线| 成人激情动漫在线观看| 无码人妻黑人中文字幕| 久久综合色88| 欧美午夜18电影| 色戒在线免费观看| 午夜精品影院在线观看| 亚洲欧美综合在线观看| 国产精品视频地址| 136国产福利精品导航网址| 男人天堂av电影| 日韩免费视频一区| 美女福利一区二区三区| 99精品视频网站| 2021国产精品久久精品| 国产欧美综合视频|