HTTP/3#

Fornece suporte ao protocolo HTTP/3 para conexões de cliente, bem como para conexões com servidores proxy configurados usando as seguintes diretivas do módulo Proxy:

Ao compilar a partir do código-fonte, este módulo não é compilado por padrão; ele deve ser habilitado com a opção de compilação ‑‑with‑http_v3_module build option.

Em pacotes e imagens de nossos repositórios, o módulo está incluído na compilação.

Exemplo de Configuração#

http {
    log_format quic '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" "$http3"';

    access_log logs/access.log quic;

    server {
        # para melhor compatibilidade é recomendado
        # usar a mesma porta para http/3 e https
        listen 8443 quic reuseport;
        listen 8443 ssl;

        ssl_certificate     certs/example.com.crt;
        ssl_certificate_key certs/example.com.key;

        location / {
            # usado para anunciar a disponibilidade do HTTP/3
            add_header Alt-Svc 'h3=":8443"; ma=86400';
        }
    }
}

Nota

Note que aceitar conexões HTTP/3 sobre TLS requer suporte ao protocolo TLSv1.3, que está disponível desde a versão 1.1.1 do OpenSSL.

Diretivas#

http3#

Sintaxe

http3 on | off;

Padrão

http3 on;

Contexto

http, server

Habilita a negociação do protocolo HTTP/3.

http3_hq#

Sintaxe

http3_hq on | off;

Padrão

http3_hq off;

Contexto

http, server

Habilita a negociação do protocolo HTTP/0.9 usado em testes de interoperabilidade QUIC.

Aviso

Habilite este modo apenas para executar testes especializados que o exijam explicitamente.

http3_max_concurrent_streams#

Sintaxe

http3_max_concurrent_streams number;

Padrão

http3_max_concurrent_streams 128;

Contexto

http, server

Inicializa as configurações HTTP/3 e QUIC e define o número máximo de fluxos de requisição HTTP/3 simultâneos em uma conexão.

http3_max_table_capacity#

Sintaxe

http3_max_table_capacity number;

Padrão

http3_max_table_capacity 4096;

Contexto

http, server

Define a capacidade da tabela dinâmica para conexões de servidor.

Nota

Uma diretiva similar proxy_http3_max_table_capacity faz isso para conexões proxy. Para evitar erros, o uso da tabela dinâmica é desabilitado quando o proxy com cache está habilitado.

http3_stream_buffer_size#

Sintaxe

http3_stream_buffer_size size;

Padrão

http3_stream_buffer_size 64k;

Contexto

http, server

Define o tamanho do buffer usado para leitura e escrita dos fluxos QUIC.

quic_active_connection_id_limit#

Sintaxe

quic_active_connection_id_limit number;

Padrão

quic_active_connection_id_limit 2;

Contexto

http, server

Define o valor do parâmetro de transporte QUIC active_connection_id_limit. Este é o número máximo de IDs de conexão que podem ser armazenados no servidor.

quic_bpf#

Sintaxe

quic_bpf on | off;

Padrão

quic_bpf off;

Contexto

main

Habilita o roteamento de pacotes QUIC usando eBPF. Quando habilitado, isso permite suportar migração de conexão QUIC.

Nota

A diretiva é suportada apenas no Linux 5.7+.

quic_gso#

Sintaxe

quic_gso on | off;

Padrão

quic_gso off;

Contexto

http, server

Habilita o envio em modo de lote otimizado usando offloading de segmentação.

Nota

O envio otimizado é suportado apenas no Linux com UDP_SEGMENT.

quic_host_key#

Sintaxe

quic_host_key file;

Padrão

Contexto

http, server

Define um file com a chave secreta usada para criptografar tokens de reset sem estado e validação de endereço. Por padrão, uma chave aleatória é gerada a cada recarga. Tokens gerados com chaves antigas não são aceitos.

quic_retry#

Sintaxe

quic_retry on | off;

Padrão

quic_retry off;

Contexto

http, server

Habilita o recurso de Validação de Endereço QUIC. Isso inclui enviar um novo token em um pacote Retry ou um frame NEW_TOKEN e validar um token recebido no pacote Initial.

Variáveis Integradas#

O módulo http_v3 suporta as seguintes variáveis integradas:

$http3#

identificador do protocolo negociado:

h3

para conexões HTTP/3

hq

para conexões hq

""

uma string vazia caso contrário

$quic_connection#

número serial da conexão QUIC