1. 下載nginx quic版本
wget https://hg.nginx.org/nginx-quic/archive/quic.zip
獲取quic版本更新可以跟蹤https://quic.nginx.org
2. 下載boringssl
由於nginx quic版本使用了新的tls1.3協議,需要openssl支持quic,但目前的openssl版本沒有對應的支持,這裏使用google的boringssl。
git clone https://github.com/google/boringssl
3.其他依賴庫pcre,zlib請自行下載
4.編譯boringssl
mkdir -p /Users/cynicliu/Documents/code/quic/boringssl/build /Users/cynicliu/Documents/code/quic/boringssl/.openssl/lib /Users/cynicliu/Documents/code/quic/boringssl/.openssl/include
ln -sf /Users/cynicliu/Documents/code/quic/boringssl/include/openssl /Users/cynicliu/Documents/code/quic/boringssl/.openssl/include/openssl
touch /Users/cynicliu/Documents/code/quic/boringssl/.openssl/include/openssl/ssl.h
cmake -B/Users/cynicliu/Documents/code/quic/boringssl/build -H/Users/cynicliu/Documents/code/quic/boringssl
make -C /Users/cynicliu/Documents/code/quic/boringssl/build
cp /Users/cynicliu/Documents/code/quic/boringssl/build/crypto/libcrypto.a /Users/cynicliu/Documents/code/quic/boringssl/build/ssl/libssl.a /Users/cynicliu/Documents/code/quic/boringssl/.openssl/lib
5.configure nginx
./auto/configure --with-zlib=../zlib-1.2.11 --with-pcre=../pcre-8.44 --with-openssl=../boringssl/ --with-http_v3_module --with-http_ssl_module
這個地方可能會有個異常,
./auto/configure: error: certain modules require OpenSSL QUIC support.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.
大家視情況而定,如果遇到異常將編譯好的庫libcrypto.a和libssl.a手動拷貝到/usr/local/lib目錄下即可
爲了避免nginx重新編譯openssl,執行下面動作更改ssl.h時間
touch ../boringssl/.openssl/include/openssl/ssl.h
6.make
#make
#./obj/nginx -V
nginx version: nginx/1.19.0
built by clang 11.0.0 (clang-1100.0.33.17)
built with OpenSSL 1.1.0 (compatible; BoringSSL) (running with BoringSSL)
TLS SNI support enabled