Featured image of post nginx-quic部署笔记

nginx-quic部署笔记

nginx是个很著名的http服务器,nginx-quic分支使它支持http/3的分支之一(来自nginx官方)了解quic后,迫不及待(划掉)地想搞一个玩玩,但踩了N个坑,所以留个笔记(顺便证明一下我的博客还活着)

其实,编译安装nginx-quic的教程很多,但关于nginx配置有的过时(写于2022-07-14咱也不能保证这个不会过时对吧),要么很难找到(事实上我就没找到)

编译安装

1
paru -S nginx-quic  

ok了,Arch真好

配置

http/3使用udp,所以需要额外添加一个listen语句

1
2
listen 443 ssl http2;
listen 443 http3 reuseport;

IMPORTANT: 一个端口只需要写一次reuseport 举个例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
...
server {
    ...
    listen 443 http3 reuseport;
    ...
}
server {
    ...
    listen 443 http3;
    ...
}
...

踩雷时间到

1. 防火墙未放行 443/udp

激动的心,颤抖的手,但是,忘放行了

1
2
sudo firewall-cmd --zone=public --add-port=443/udp
sudo firewall-cmd --zone=public --add-port=443/udp --permanent

2. Alt-Svc标头和QUIC-Status标头

当时按照网上的教程,抄了一个Alt-Svc,用curl检测时,无法发起http/3请求,查了很久找不到资料,然后 灵机一动 找了个支持http/3的网站抄了一个

部分教程Alt-Svc标头过期,导致无法发起http/3请求

1
2
add_header Alt-Svc 'h3=":443"; ma=86400';
add_header QUIC-Status $http3;

3. ssl_stapling ignored

特大号巨坑,全网没几篇文章提到,手搓了半天证书,一直没起作用,搞了好久才发现nginx-quic不支持OCSP而不是证书有问题,另外,实际使用中差别并不大,如果有需要可以用OpenSSL编译nginx-quic

nginx-quic使用BoringSSL,但是nginx的ocsp实现完全基于OpenSSL,所以sudo nginx -t会提示:

1
"ssl_stapling" ignored, not supported

没特殊需要,不必管它


最后

检测HTTP/3支持

nginx配置文件生成

Licensed under CC BY-SA 4.0
最后更新于 2023-11-30 05:04 UTC