Nginx配置似乎无法启用http3

new9mtju  于 4个月前  发布在  Nginx
关注(0)|答案(1)|浏览(88)

现在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。
如果有人知道我可能错过了什么...谢谢!

u4dcyp6a

u4dcyp6a1#

经过几次尝试,我能够通过添加以下头来使HTTP/3工作,根据this official nginx blog post

server {

    listen 443 quic;
    listen 443 ssl;
    server_name www.mywebsite.com;

    ...

    # Add Alt-Svc headers to negotiate HTTP/3
    add_header Alt-Svc  'h3=":$server_port"; ma=3600, h2=":$server_port"; ma=3600';
    add_header Alt-Svc  'h2=":$server_port"; ma=2592000; persist=1';
    add_header Alt-Svc  'h2=":$server_port"; ma=2592000;';

    ...

}

字符串
(you如果这是您用于HTTPS的端口,则可以将$server_port替换为443
似乎可以在server指令中的特定vhost文件中添加这些头文件,或者在http指令中为nginx.conf中的所有vhost添加这些头文件。也许这对你不起作用,因为你把头文件放在了location指令中。
顺便说一下:
1.似乎http3 on指令是不必要的,因为它已经是enabled by default(即not the case for the http2 on directive
1.当我们这样做的时候,启用QUIC 0-RTT connection resumption feature也是一个好主意:

server {
    ...

    # Enabling QUIC 0-RTT
    ssl_early_data on;

    ...
}


同样,这似乎也可以为全局nginx.conf conf文件中的http指令中的所有vhost添加。

相关问题