Nginx支持quic协议
创始人
2024-05-30 19:12:59
0

第一种方式:Nginx官方nginx-quic搭建

通过部署Nginx官方的QUIC分支来实现的浏览器和nginx-quic服务器粗略的HTTP3通信。
1、下载BoringSSL
BoringSSL 是由谷歌开发,从 OpenSSL 中分离的一个分支。BoringSSL 是 Chrome/Chromium、Android(但它不是 NDK 的一部分)和许多其他应用程序/程序中的 SSL 库。

由于nginx quic版本使用了新的tls1.3协议,需要openssl支持quic,但目前的openssl版本没有对应的支持,所以这里使用google的boringssl。

## 下载代码
git clone https://github.com/google/boringssl.git 
## 编译代码cd boringsslmkdir buildcd buildcmake ..make

2,Cmake命令下载安装,要求安装3.0以上版本

wget https://cmake.org/files/v3.24/cmake-3.24.3.tar.gz
tar zxvf cmake-3.24.3.tar.gz
cd cmake-3.24.3
./bootstrap --prefix=/usr/local/
make && make install

3,安装BoringSSL 要求go版本为1.19

1,删除旧版本go环境
rm -rf /usr/local/go
2,wget https://golang.google.cn/dl/go1.19.linux-amd64.tar.gz
3,tar -C /usr/local/ -zxvf go1.1.19.linux-amd64.tar.gz (官方推荐解压到/usr/local/目录下)
4,配置环境变量 vi /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin 
使修改文件生效 source /etc/profile
5,查看版本 go version
6,如果不生效cd /usr/bin/rm go gofmtcd /usr/local/go/bincp go* /usr/bin/

在这里插入图片描述
4,安装更高版本的gcc
gcc 4.8 的漏洞,在gcc 4.9已经修复,之前使用11.1.0不成,不知道是不是自己的原因,后改换gcc 8.1.0
gcc官网 https://gcc.gnu.org/
下载地址: http://ftp.gnu.org/gnu/gcc/
在这里插入图片描述

1,解压
tar -zxvf gcc-8.1.0.tar.gz
2,查看安装前依赖的软件包
cd gcc-8.1.0/
vim contrib/download_prerequisites

在这里插入图片描述
3,下载对应依赖包
可以直接执行yum groupinstall “Development Tools” 下载,然后安装
也可以分别下载安装,选择需要的版本
https://ftp.gnu.org/gnu/gmp/
https://ftp.gnu.org/gnu/mpfr/
https://ftp.gnu.org/gnu/mpc/
https://gcc.gnu.org/pub/gcc/infrastructure/
4,安装顺序:GMP,mpfr, mpc,isl 。最后安装gcc
5,原来旧版本的gcc不能先卸载,否则安装过程报错
6,安装gmp

    $ tar -jxvf gmp-6.1.0.tar.bz2$ cd gmp-6.1.0$ mkdir temp$ cd temp$ ../configure --prefix=/usr/local/gmp-6.1.0         -----指定安装目录$ make$ make install

7,安装mpfr

    $ tar -zxvf mpfr-3.1.4.tar.gz $ cd mpfr-3.1.4$ mkdir temp$ cd temp$ ../configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.0$ make$ make install其中--with=/usr/local/gmp-6.1.0就是依赖项, /usr/local/gmp-6.1.0是gmp的安装目录

8,安装mpc

    $ tar -zxvf mpc-1.0.3.tar.gz$ cd mpc-1.0.3$ mkdir temp$ cd temp$ ../configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4$ make$ make install记得后面两项的依赖项,也就是你的gmp和mpfr的安装目录

9,安装isl(isl只依赖gmp)

    $ tar -zxvf isl-0.18.tar.bz2$ cd isl-0.18$ mkdir temp$ cd temp../configure --prefix=/usr/local/isl-0.18 --with-gmp=/usr/local/gmp-6.1.0$ make$ make install

安装isl报错,安装yum install gmp-devel.x86_64,执行成功
在这里插入图片描述
10,安装gcc

$ cd ..
$ tar -zxvf gcc-8.1.0.tar.gz
$ cd gcc-8.1.0
$ ./configure --prefix=/usr/local/gcc-8.1.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local
$ make && make install && echo "say ok"
编译安装过程一个多小时
卸载旧版本编译器
$ yum remove gcc gcc-c++
$ ln -s /usr/local/gcc-8.1.0/bin/c++ /usr/bin/c++
$ ln -s /usr/local/gcc-8.1.0/bin/g++ /usr/bin/g++
$ ln -s /usr/local/gcc-8.1.0/bin/gcc /usr/bin/gcc
添加环境变量,修改profile文件,在最末添加如下两句
$ vim /etc/profile
LD_LIBRARY_PATH=/usr/local/gcc-8.1.0/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
$ source /etc/profile
cp /usr/local/gcc-11.1.0/lib64/libstdc++.so.6 /usr/lib64/

在这里插入图片描述
11,编译其他软件时报错:checking for C compiler … not found
解决: ./auto/configure --with-cc=/usr/bin/gcc
12,如果依然有错误找不到gcc
在/root/.bashrc中添加gcc的路径:
vim /root/.bashrc
同样把export PATH=$PATH:/usr/local/arm/4.3.2/bin添加到文件中
立即更新有效:source /root/.bashrc
5,下载Nginx的QUIC版

官网下载:http://hg.nginx.org/nginx-quic
cd nginx-quic
./auto/configure --with-debug --with-http_v3_module \--with-cc-opt="-I/root/tengine/boringssl/include" \--with-ld-opt="-L/root/tengine/boringssl/build/ssl \-L/root/tengine/boringssl/build/crypto"make && make install

在这里插入图片描述
6,对编译好的nginx进行配置启动

server {listen 8443 quic reuseport;listen 8443 ssl;ssl_protocols      TLSv1.2 TLSv1.3;ssl_certificate      /usr/local/nginx123/ca.1way/server.crt;ssl_certificate_key  /usr/local/nginx123/ca.1way/server.key;location / {proxy_pass        http://serverpool;add_header Alt-Svc 'h3=":8443"; ma=86400';}}upstream serverpool {server 192.168.159.144:8080;}

7,访问服务器
使用火狐浏览器进行访问,首先在火狐地址栏输入:about:config
然后查找network.http.http3.enabled,把false改为true,重启浏览器
在这里插入图片描述
在这里插入图片描述

第二种方法,使用cloudflare的quiche

参考链接:
https://blog.cloudflare.com/experiment-with-http-3-using-nginx-and-quiche/
https://kbsml.com/?p=67

 % curl -O https://nginx.org/download/nginx-1.16.1.tar.gz% tar xvzf nginx-1.16.1.tar.gz% git clone --recursive https://github.com/cloudflare/quiche% cd nginx-1.16.1% patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch% ./configure                          	\--prefix=$PWD                       	\--with-http_ssl_module              	\--with-http_v2_module               	\--with-http_v3_module               	\--with-openssl=../quiche/deps/boringssl \--with-quiche=../quiche% make && make install

nginx文件配置同上
浏览器访问,查看协议类型
在这里插入图片描述

相关内容

热门资讯

佛慈制药成功召开定眩丸大品种培... 转自:佛慈制药2025年7月5日,兰州佛慈制药股份有限公司(以下简称“佛慈制药”)在北京成功举办“定...
警示曝光丨查处3起电动自行车领... 北京市市场监管系统全力推进电动自行车安全隐患全链条整治行动,为强化警示教育作用,实现“查处一个,警示...
成都世运会颁奖物资正式亮相,亮... 川观新闻记者 肖莹佩  何海洋7月8日,在2025年第12届世界运动会(下称:成都世运会)开幕倒计时...
西藏自治区人民政府原副主席王勇... 中新社北京7月8日电 (记者 张素)记者从中国最高人民法院获悉,7月8日,湖南省郴州市中级人民法院公...
乖宝宠物:拟6.5亿元投建智能... 转自:证券时报人民财讯7月8日电,乖宝宠物(301498)7月8日晚间公告,为提升产品配送效率和整体...
南京大学王新颖团队发现胰腺癌来... 转自:生物谷(维权)导读:胰腺导管腺癌(PDAC)的恶液质发生率高达80%,即使进行营养支持也无法逆...
施一公、薛其坤、潘建伟院士相聚... 今天,施一公、薛其坤、潘建伟等众多科学家和青年科研人员相聚上海黄浦江畔,参加“未来科学大奖十周年庆典...
好利科技董事会换届提名 包含... 好利科技(维权)(002729)发布公告,第五届董事会任期将于2025年7月26日届满,为顺利完成董...
南京溧水:点“废”成金 织就全... 转自:龙虎网龙虎网讯(记者 刘承鸿 通讯员 周颖 呙澄)小微企业“组团”治废,稻田里施用的炭基肥孕育...
7月8日外交部发言人答问汇总 转自:北京日报客户端7月8日,外交部发言人毛宁主持例行记者会。毛宁。图源:外交部网站应国务院总理李强...