centos6.9安装nginx安装http3

5 篇文章 0 订阅
1 篇文章 0 订阅

前言:

  安装nginx支持http3时对版本是软件的有一些要求的,安装过程中如果版本不差异会导致编译存在问题。
还有就是安装过程中会有一些依赖支持库;

  gcc版本:大于 gcc-4.7

  pcre版本: pcre-8.00

  nginx版本: nginx-1.17.9 或 nginx-1.16.x

  cmake版本: 大于 cmake-3.0

  golang版本: go1.13.x

(一) 安装支持扩展

1.1 安装pcre

安装

$yum -y install pcre-devel

$wget ftp://ftp.pcre.org/pub/pcre/pcre-8.00.tar.gz
$tar zxf pcre-8.00.tar.gz && cd pcre-8.00 && make && make install

  PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。Boost太庞大了,使用boost regex后,程序的编译速度明显变慢。测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1秒。因此改用pcre来解决C语言中使用正则表达式的问题。

1.2 安装gcc

安装gcc 8.x,由于cmake需要安装cmake 3.x 以上版本,但是编译cmake需要c++11;gcc4.7之后才支持c++11,安装一个高版本是为了完整兼容。

# 更新源码仓库
$ sudo yum install centos-release-scl
# 下载gcc8
$ sudo yum install devtoolset-8

可以参考:
https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/

替换老的gcc

$mv /usr/bin/gcc /usr/bin/gcc.old
$mv /usr/bin/cc /usr/bin/cc.old
$mv /usr/bin/c++ /usr/bin/c++.old
$ln -s /opt/rh/devtoolset-8/root/usr/bin/gcc /usr/bin/gcc
$ln -s /opt/rh/devtoolset-8/root/usr/bin/cc /usr/bin/cc
$ln -s /opt/rh/devtoolset-8/root/usr/bin/c++ /usr/bin/c++

1.3 安装cmake

# 卸载旧版
$yum remove cmake
# 下载cmake
$wget https://github.com/Kitware/CMake/releases/download/v3.15.4/cmake-3.15.4.tar.gz
# 解压编译安装
$tar zxf cmake-3.15.4.tar.gz && cd cmake-3.15.4 && ./bootstrap && make && make install
# 设置软连接
$ln -s /usr/local/bin/cmake /usr/bin/cmake

1.4 安装libunwind扩展库和go

$yum -y install go libunwind-devel

1.5 安装rust

$curl https://sh.rustup.rs -sSf | sh

安装过程可能会比较慢,可以更新下载源后执行:

$ vim ~/.bashrc
# 在文件中加入以下两句
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
# 接下来运行命令使文件生效
$ source ~/.bashrc

可以参照:

  https://blog.csdn.net/tjzzy/article/details/88635514

(二) 安装nginx

2.1 下载nginx:

$cd /data/
$wget http://nginx.org/download/nginx-1.17.9.tar.gz

2.2下载quiche及支持库:

$cd /data/
$git clone --recursive https://github.com/cloudflare/quiche

2.3添加nginx模块:

$cd /data/
$tar zxvf nginx-1.17.9.tar.gz
$cd /data/nginx-1.17.9/
#nginx quic补丁
$curl https://raw.githubusercontent.com/kn007/patch/master/nginx_with_quic.patch | patch -p1
$patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

2.4编译:

$ ./configure  --with-http_ssl_module --with-http_v2_module  --with-http_v3_module --with-openssl=../quiche/deps/boringssl --with-quiche=../quiche --without-http_gzip_module --build="quiche-$(git --git-dir=../quiche/.git rev-parse --short HEAD)" 

编译中如果遇到如下错误

nginx/quiche/deps/boringssl/ssl/test/bssl_shim.cc:664:44: error: expected ‘)’ before ‘PRId32’
     fprintf(stderr, "Ticket age skew was %" PRId32 ", wanted %d\n",
            ~                               ^~~~~~~
                                            )

可以设置c++ 添加__STDC_FORMAT_MACROS

$c++ -D__STDC_FORMAT_MACROS 

或通过configure生产objs/Makefile 后修改cmake的-DCMAKE_CXX_FLAGS参数

mkdir -p ../quiche/deps/boringssl/build ../quiche/deps/boringssl/.openssl/lib ../quiche/deps/boringssl/.openssl/include/openssl \
       && cd ../quiche/deps/boringssl/build \
       && cmake -DCMAKE_C_FLAGS="" -DCMAKE_CXX_FLAGS="-D__STDC_FORMAT_MACROS" .. \
       && $(MAKE) VERBOSE=1 \
       && cd .. \
       && cp -r include/openssl/*.h .openssl/include/openssl \
       && cp build/ssl/libssl.a build/crypto/libcrypto.a .openssl/lib

在这里插入图片描述
保证编译中c++存在__STDC_FORMAT_MACROS参数

(三)配置http3

nginx http3配置

 server {
        #Enable QUIC and HTTP/3.
        listen 443 ssl http2 quic reuseport;
        server_name  localhost;
        root /home/ceshi/;
        # 只支持tls1.3
        ssl_protocols        TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

        # Add Alt-Svc header to negotiate HTTP/3.
        add_header alt-svc 'h3-27=":443"; ma=86400, h3-25=":443"; ma=86400, h3-24=":443"; ma=86400, h3-23=":443"; ma=86400';
  }

mac下安装curl测试http3

#mac安装curl
$brew install --HEAD -s https://raw.githubusercontent.com/cloudflare/homebrew-cloudflare/master/curl.rb

#访问
$curl curl -I –http3 https://192.168.1.108/

参考献文

  https://blog.cloudflare.com/experiment-with-http-3-using-nginx-and-quiche/

  https://blog.cloudflare.com/zh/http-3-from-root-to-tip-zh/

  https://i-meto.com/nginx-http3/

  https://www.nange.cn/quiche-and-http3-for-nginx.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值