menu
吃上最新鮮的 NGINX 以及全新的特性 (tls1.3)

由于博主的习惯问题,复制命令的时候请勿复制中文进去(躺
博主均在 Redhat 7.5Centos 测试通过,如有疑问,请在 关于 找到我的邮箱咨询~
文章的连接并不能保证它是最新的,但安装方式是通用的。
我会不定时的更新新的 link,下面的也会标注来源。

編譯準備

yum -y groupinstall "Development Tools"
yum install -y nano wget git make cmake automake gcc gcc-c++  

# 你可能需要一个临时的目录
mkdir ng-src && cd ng-src

编译 GCC 8.2(about 2hour+)(打扰了)
为了好看,这里编译一个 GCC(当然你可以选择不编译,使用 yum 源里的)

# http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.gz && tar xzf gcc-8.2.0.tar.gz && cd gcc-8.2.0 && ./contrib/download_prerequisites && cd .. && mkdir temp_8.2 && cd temp_8.2 && ../gcc-8.2.0/configure --prefix=/usr/local/gcc --enable-threads=posix --disable-checking --disable-multilib && make && make install

编译 Golang
为了好看,这里安装一个 GoLang(编译耗时啊!)

# 你可以选择 Linux x64 版本
# https://golang.org/dl/
wget https://dl.google.com/go/go1.11.3.linux-amd64.tar.gz && tar xzf go1.11.3.linux-amd64.tar.gz && mv go /usr/local/go

安装 libbrotli

git clone --branch=master https://github.com/bagder/libbrotli && cd libbrotli && ./autogen.sh && ./configure && make && make install && cd ..

临时 环境变量

PATH=$PATH:/usr/local/go/bin:/usr/local/gcc/bin

其他 依赖,以及最后准备

# 一堆杂项
git clone --branch=master https://github.com/cloudflare/zlib.git zlib-cloudflare && cd zlib-cloudflare && ./configure && cd ..
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz && tar xzf pcre-8.42.tar.gz
git clone --branch=master https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git

# 拉取并编译 Boring
git clone --branch=master https://github.com/google/boringssl.git && cd boringssl && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release ../ && make && cd .. && mkdir -p .openssl/lib && cd .openssl && ln -s ../include . && cd .. && cp build/crypto/libcrypto.a build/ssl/libssl.a .openssl/lib && cd ..

# 拉取并配置 Brotli
git clone https://github.com/google/ngx_brotli && cd ngx_brotli && git submodule update --init && cd ..

# 拉取 Nginx
git clone --branch=master https://github.com/nginx/nginx.git && cd nginx

编译配置

# 初始化 MAKEFILE
./auto/configure \
--prefix=/usr/local/nginx \
--with-pcre=../pcre-8.42 \
--with-pcre-jit \
--with-zlib=../zlib-cloudflare \
--with-openssl=../boringssl \
--with-http_ssl_module \
--with-http_v2_module \
--with-debug \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-http_stub_status_module \
--with-http_sub_module \
--add-module=../ngx_brotli \
--add-module=../ngx_http_substitutions_filter_module 

# 请务必在编译前执行,否则编译报错
touch ../boringssl/.openssl/include/openssl/ssl.h

编译!

make && make install

配置环境变量

nano /etc/profile 

# 在末尾添加 Ctrl+O 即可保存 Ctrl+X 为关闭
PATH=$PATH:/usr/local/go/bin:/usr/local/gcc/bin:/usr/local/nginx/sbin

# 使环境变量生效
source /etc/profile

編輯

在您的 nginx.conf 配置文件里添加如下信息
请添加在 http 字段里

#Brotli Compression
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;

 在您的网站配置文件上添加(或删改)如下信息

ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers  '[TLS13-AES-128-GCM-SHA256|TLS13-CHACHA20-POLY1305-SHA256] TLS13-AES-256-GCM-SHA384 [ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305] ECDHE-RSA-AES256-GCM-SHA384';

最後

启动 Nginx : nginx

感谢 南琴浪的教程 使我入门。

本文作者:WatermelonKi
本文采用 CC BY-NC-SA 3.0 Unported 协议进行许可,阅读 相关说明
本文鏈接:https://Hvilimy.us/archives/new-nginx-tls.html