nginx 从1.25开始支持QUIC和http3
# quictls 编译安装 ./Configure --prefix=$HOME/quictls --openssldir=$HOME/openssl-quic -fPIC no-shared make && make install # nginx 编译安装 auto/configure --with-debug --with-http_v3_module --with-http_v2_module --with-cc-opt="-I $HOME/quictls/include" --with-ld-opt="-L $HOME/quictls/lib64" --prefix=$HOME/nginx-quic --with-cc-opt="-DNGX_QUIC_DEBUG_PACKETS -DNGX_QUIC_DEBUG_CRYPTO" --with-openssl=$HOME/install/openssl make && make install
nginx.conf
user root;
worker_processes 1;
error_log logs/error.log debug;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http3"';
access_log logs/access.log quic;
server {
# for better compatibility it's recommended
# to use the same port for quic and https
listen 443 quic reuseport;
listen 443 ssl ;
http3 on;
http2 on;
quic_retry on;
ssl_early_data on;
#server_name server_name;
ssl_certificate certs/cert.pem;
ssl_certificate_key certs/priv.key;
ssl_protocols TLSv1.3;
add_header Alt-Svc 'h3=":443"; ma=86400';
location / {
index index.html index.htm;
}
}
}
目前默认的curl还不支持http3,参考 https://curl.se/docs/http3.html编译。
./curl --http3-only https://127.0.0.1:443/ -k -v * Trying 127.0.0.1:443... * QUIC cipher selection: TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_SHA256 * Skipped certificate verification * Connected to 127.0.0.1 (127.0.0.1) port 443 * using HTTP/3 * [HTTP/3] [0] OPENED stream for https://127.0.0.1:443/ * [HTTP/3] [0] [:method: GET] * [HTTP/3] [0] [:scheme: https] * [HTTP/3] [0] [:authority: 127.0.0.1] * [HTTP/3] [0] [:path: /] * [HTTP/3] [0] [user-agent: curl/8.6.0] * [HTTP/3] [0] [accept: */*] > GET / HTTP/3 > Host: 127.0.0.1 > User-Agent: curl/8.6.0 > Accept: */* > < HTTP/3 200 < server: nginx/1.25.4
如果使用浏览器,目前需要进行设置, https://www.bram.us/2020/04/08/how-to-enable-http3-in-chrome-firefox-safari/
chrome需要增加参数, –origin-to-force-quic-on=https://XXX/, 目前测试未使用域名也能会使用切换到http1.1 或http2
图片from陳風雲


Comments are closed.