Nginx auth_request é acionado várias vezes, por quê?

1

Eu tenho um proxy simples que requer uma subrequista auth_request para autenticação. Os usuários autenticados são então enviados por proxy para um URL s3 para baixar um arquivo.

O que estou vendo, no entanto, é que a sub-solicitação de autenticação é acionada mais de uma vez por visita do usuário ao URL do proxy.

Não sei por que isso acontece, uma teoria que tenho é que o download do s3 é grande e requer vários pacotes para download, cada pacote requer uma sub-solicitação de autenticação individual? Mas isso não parece certo, eu estava sob a suposição de que uma única sub-requisição de autenticação foi aplicada durante a vida útil da sessão.

Eu sei que a subrequência de autenticação está sendo acionada mais de uma vez, porque no código de subsequest eu adicionei recursos de registro que mostram entradas duplicadas por uma única solicitação.

Alguém tem mais informações sobre isso?

Abaixo está minha configuração do nginx (isso ocorre com e sem a diretiva auth_request_set no lugar)

location ~* ^/(assets/.*) {
    auth_request /auth-proxy; 

    resolver 8.8.8.8;

    proxy_pass_request_headers off;
    proxy_pass_request_body off;
    proxy_redirect off;

    auth_request_set $token $upstream_http_token;

    client_max_body_size 5120M;

    proxy_pass https://bucket-name.s3.amazonaws.com/$1?$token;
}
    
por Radmilla Mustafa 21.04.2015 / 00:22

1 resposta

1

O problema não era que vários sub-requisitos estavam sendo emitidos por uma única solicitação, mas o servidor S3 que estava sendo intermediado por proxy estava respondendo com 206 respostas de Conteúdo Parcial, fazendo com que o cliente emitisse solicitações subsequentes para pegar o restante do conteúdo (que precisa corretamente) ser reafirmado através de uma nova sub-requisição).

Isso não foi identificado mais cedo porque o Firebug estava condensando a 206 cadeia de conteúdo parcial em um único 200 nos logs de rede, então eu não estava imediatamente ciente de que isso estava acontecendo nos bastidores até que notei que o S3 não emitirá 206 respostas quando o agente do usuário está wget!

    
por 21.04.2015 / 19:04