在Nginx v1.27.0中支持HTTP/2和HTTP/3
大家好,我是无能。
最近,我以为在东京找到了一处房子,结果又回到了原点,不过现在感觉好像找到了一个不错的住处。最坏的情况,我就随便找个合租房住进去。
最近,在现在的工作单位,同一个项目组的成员说要给我办欢送会,我感到非常感激。
我深感人生中遇到了很多好人。
顺便说一下,上次我给Deno发送了一个拉取请求,他们设置了一个里程碑,所以我可以不慌不忙地跟踪源代码。Deno的Rust代码量非常大,即使是微不足道的功能,也要尽量减少改动,因为说明书就像源代码一样,所以只能多方尝试了。
如果不行,到时候再想办法。
在Nginx中支持HTTP/2和HTTP/3
当我读到PHP开发者拉斯姆斯·勒多夫的采访文章时,看到他说对HTTP/2感到未来可期,我就想‘咦,我的Nginx服务器怎么样了呢?’,于是决定尝试支持一下。
看来Nginx对HTTP/3的支持是在v1.25之后,所以先检查一下版本。
# nginx -v
nginx version: nginx/1.27.0
看起来是支持的。
我的Nginx不是通过pkg安装的,而是自己编译的,所以即使在相同的FreeBSD环境下也可能会有差异。
我决定先不考虑复杂的事情,尝试实现支持。
写入conf文件
由于我的Nginx服务器只是作为反向代理运行,所以我会快速完成。
server {
listen 443 ssl;
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
http2 on;
http3 on;
server_name soulminingrig.com www.soulminingrig.com;
我记得HTTP/3好像是Google正在推动的,而且QUIC协议本身似乎也是Google创建的。
在头部信息中追加以下内容
add_header Alt-Svc 'h3=":443"; ma=86400';
add_header X-Content-Type-Options nosniff;
然后,用nginx -t进行测试,如果没有问题就重启。
由于我正在使用root用户操作,所以执行以下命令。
service nginx restart
而且,QUIC本身似乎使用443/UDP,所以需要开放这个端口...
第3章 详解HTTP/3 ~ いかにしてQUICを活用し、いかにして高速化を実現したか
目前许多实现默认使用UDP的443端口。
如上所述
add_header Alt-Svc 'h3=":443"; ma=86400';
因为设置的是443端口,所以开放443端口即可,如果需要更改,开放其他端口也可以。
vim /etc/pf.conf
然后追加以下内容
set skip on lo
exsrv1 = 167.179.75.206
~~~
# HTTP/3 Protocol
pass in inet proto udp from any to $exsrv1 port 443
然后用-nf选项测试,再用-f应用。
pfctl -nf /etc/pf.conf
pfctl -f /etc/pf.conf
是否已正确应用?
虽然也有用Curl确认是否应用成功的方法,但通常这种时候从与自己网络无关的地方确认会更好地进行验证,所以我在浏览器上确认。
HTTP/3 Check

嗯,成功了!
虽然也有人进行了更详细的设置,但我认为暂时到这里就可以了。
那么。下次再见。