这篇文章介绍了宝塔 Nginx 反代上游服务器不支持 HTTP3 时启用 HTTP3 的方法。包括启用网站监听 443QUIC,在宝塔反代中开启缓存,插入特定响应头,按此操作后可成功获得 HTTP3 支持,为解决相关问题提供了实用教程。
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结
投诉
上一篇文章介绍了宝塔如何为网站开启HTTP3,这个适合没有反代的网站,但是如果我们平常使用Docker的时候就会发现之前的文章是无法解决Docker项目的HTTP3开启了。
HTTP3是要求全链路都需要支持QUIC的,而大多数情况容器本身也不会去考虑支持QUIC并且也没必要,难道就没有办法了吗?
当然有啦。其实目的就是利用了Nginx的缓存。虽然服务器到容器的链路不支持QUIC,但是如果用户访问不到服务器到容器的链路,直接读Nginx的缓存,那么即可实现HTTP3。
启用网站监听443QUIC
我们进入带有反代的网站设置,跟之前的教程一样,添加
第一次添加的网站
Code
1
listen 443 quic reuseport;
以后添加的网站
Code
1
listen 443 quic;
quic
开启缓存
在我们已经在宝塔中设置好的反代中,点击开启缓存。并且点击配置文件。
开启缓存
插入响应头
我们需要在location里添加我们之前文章中说的响应头:
Code
1
add_header Alt-Svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"';
大功告成
我们可以看到已经成功获得了HTTP3的支持啦!
HTTP3支持
HTTP3支持
给Python项目添加HTTP3支持
我们知道了nginx缓存的方案可以让不支持QUIC的项目支持HTTP3。那么同样的原理可以用在Python项目上。
我的某个项目是Python项目,只需要
server块添加QUIC监听:
Code
1
listen 443 quic;
在 location 块中添加缓存支持
Code
1
2
3
4
proxy_ignore_headers Set-Cookie Cache-Control expires;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 1m;
在 location 块中添加http3支持
Code
1
add_header Alt-Svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"';
即可实现HTTP3。