日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QUIC实战(一) 通过Quiche部署支持HTTP3 的NGINX

發布時間:2024/4/11 编程问答 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QUIC实战(一) 通过Quiche部署支持HTTP3 的NGINX 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前研究了下quic相關的特性,不過一直沒有去搭建過,最近需要在公司搭建一個quic的生產測試環境,記錄一下也方便其他需要搭建環境的開發參考。

QUIC的搭建方案有很多,最后我們選擇了Quiche。CloudFlare 已經成功在CDN業務中實現了基于Quiche的QUIC部署,該方案相對比較成熟。Quiche其中有一個patch就是NGINX補丁,為了實現基于Quiche和谷歌Boringssl 實現的HTTP3 Quic協議。

我搭建的是nginx+upsync+consul的集群,所以在編譯nginx我將upsync模塊也加入進去了

編譯支持HTTP3的nginx

1.下載nginx和quiche

wget https://nginx.org/download/nginx-1.16.1.tar.gz git clone --recursive https://github.com/cloudflare/quiche ## 下載nginx-upsync-module wget https://github.com/weibocom/nginx-upsync-module/archive/master.zip

這里我并沒有重新從github下載quiche,而是直接使用了之前同事下載的,quiche下載比較慢,我將使用的quiche壓縮包上傳到資源里了,需要的可以從我的資源里下載。注意下quiche.zip的存放目錄(/opt/nginx-quic)

2.安裝相關的依賴環境
為了實現QUIC,NGINX編譯必須用到quiche的相關庫及BoringSSL的庫文件。

BoringSSL編譯需要CMake 3.0或更高版本 、 需要Perl 、GCC、Clang 、Go環境。
QUICHE需要 Rust 1.38或更高版本才能構建。

## cmake3 安裝 wget https://cmake.org/files/v3.16/cmake-3.16.0-rc2.tar.gz tar xvzf cmake-3.16.0-rc2.tar.gz ## 安裝編譯依賴--- 這里安裝了openssl,perl yum install -y gcc-c++ make automake openssl-devel ## 開始編譯 cd cmake-3.10.0-rc2/ ./bootstrap gmake gmake install

安裝成功后可以看到如下版本信息:

## 安裝rust,同時也安裝了cargo curl https://sh.rustup.rs -sSf | sh ## 生效環境變量 source $HOME/.cargo/env## 安裝clang,go yum install clang go -y

3.正式編譯安裝nginx

## 解壓 如果提示命令不存在,則使用 yum -yinstall unzip安裝 unzip nginx-upsync-module-master.zip tar zxvf nginx-1.16.1.tar.gz cd nginx-1.16.1 yum -y install patch patch -p01 < ../nginx-quic/quiche/extras/nginx/nginx-1.16.patch ./configure \--prefix=/opt/server/nginx \--build="quiche-$(git --git-dir=../quiche/.git rev-parse --short HEAD)" \--with-http_ssl_module \--with-http_v2_module \--with-http_v3_module \--with-openssl=../nginx-quic/quiche/deps/boringssl \--with-quiche=../nginx-quic/quiche \--add-module=../nginx-upsync-module-master ##編譯 make sudo make install

注意下這里openssl,quiche以及upsync對應的文件目錄。由于我使用的是同事的quiche,所以quiche的存放路徑需要和他的寫成一樣的( /opt/nginx-quic )

遇到的問題:

1)

我就是由于存放quiche的路徑不對導致出現該錯誤,放到/opt/nginx-quic之后就可以了。

2)

查看下對應錯誤日志文件

cat /opt/nginx-quic/quiche/deps/boringssl/build/CMakeFiles/CMakeError.log

C編譯器有問題,可以升級下gcc的版本,我一開始使用的4.8版本的gcc編譯就有問題,執行如下操作更新到7.3及以上就行了

## 安裝gcc7.3及以上 ## 安裝scl源,因為centos7默認安裝的gcc就是4.8,使用其編譯nginx會有問題 yum -y install centos-release-scl yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils

如果更新不成功,可以參考該博客安裝gcc 7.3
GCC 7.3.0編譯安裝

編譯安裝gcc 7.3 過程中如果出現如下報錯信息, 安裝下bzip2 就可以了 yum -y install bzip2

修改配置文件

編譯完成后,只要修改配置文件就可以了

# Enable QUIC and HTTP/3.listen 443 quic reuseport;# Enable HTTP/2 (optional).listen 443 ssl http2;## http3 需要申請證書,將申請證書上傳到服務器,然后在這里配置對應的存放目錄ssl_certificate /opt/ssl/fullchain.pem;ssl_certificate_key /opt/ssl/privkey.pem;# Enable all TLS versions (TLSv1.3 is required for QUIC).ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;# Add Alt-Svc header to negotiate HTTP/3.add_header alt-svc 'h3-29=":443"; ma=86400';

通過sbin/nginx -c conf/nginx.conf 命令啟動nginx就可以了
我是先在本地安裝好nginx之后,直接把安裝目錄/opt/server/nginx 下的文件打包然后在aws上部署就可以了

驗證支持QUIC

最后就只要驗證下quic是否有生效就可以了,可以通過如下地址https://www.http3check.net/來驗證下是否支持http3

還可以通過谷歌瀏覽器來驗證下,下載Google Chrome Canary 并設置其啟動參數--enable-quic --quic-version=h3-29, 啟動后,然后訪問nginx的路徑就可以了


這樣就搭建好了

參考資料:

nginx啟用http3.0

使用CloudFlare的Quic實現Quiche部署NGINX的HTTP3 Quic協議

How to Test if a Website supports HTTP/3?

總結

以上是生活随笔為你收集整理的QUIC实战(一) 通过Quiche部署支持HTTP3 的NGINX的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。