现在Nginx 1.25.1支持quic/http 3运行,我试图通过遵循他们的文档或互联网上的一些示例来启用它,但到目前为止,我无法让任何东西工作:它总是通过http1.1提供。
(我没有启用http 2的问题,只是为了记录)。
下面是我的测试vhost的配置文件:
server {
listen 443 quic;
listen 443 ssl;
server_name www.mywebsite.com;
http3 on;
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf|woff|woff2)$ {
root /var/www/landings/mywebsite/site/;
add_header Access-Control-Allow-Origin *;
add_header Alt-Svc 'h3=":443"; ma=86400';
expires 30d;
}
location / {
proxy_pass http://127.0.0.1:8005/;
root /var/www/landings/mywebsite/site/;
include /etc/nginx/conf.d/headers.conf;
add_header Access-Control-Allow-Origin *;
add_header Alt-Svc 'h3=":443"; ma=86400';
}
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
字符串
我尝试了几个不同的步骤,比如使用或不使用http 3指令,使用add_header QUIC-Status $http3;
,以及经常出现在教程页面中的东西,但到目前为止没有任何效果。
TLSv1.3已启用。
日志没有显示任何具体的内容,nginx配置检查都很清楚。Debian牛眼上的Nginx版本是1.25.1。
如果有人知道我可能错过了什么...谢谢!
1条答案
按热度按时间u4dcyp6a1#
经过几次尝试,我能够通过添加以下头来使HTTP/3工作,根据this official nginx blog post:
字符串
(you如果这是您用于HTTPS的端口,则可以将
$server_port
替换为443
)似乎可以在
server
指令中的特定vhost文件中添加这些头文件,或者在http
指令中为nginx.conf
中的所有vhost添加这些头文件。也许这对你不起作用,因为你把头文件放在了location
指令中。顺便说一下:
1.似乎
http3 on
指令是不必要的,因为它已经是enabled by default(即not the case for thehttp2 on
directive)1.当我们这样做的时候,启用QUIC 0-RTT connection resumption feature也是一个好主意:
型
同样,这似乎也可以为全局
nginx.conf
conf文件中的http
指令中的所有vhost添加。