Nginx auth_request se déclenche plusieurs fois, pourquoi?

1

J'ai un simple proxy qui nécessite un auth_request sous-demande d'authentification. Les utilisateurs authentifiés sont ensuite mandatés vers une URL s3 pour télécharger un fichier.

Ce que je vois cependant, c’est qu’il semble que la sous-requête d’authentification se déclenche plus d’une fois par visite d’utilisateur sur l’URL du proxy.

Je ne suis pas sûr de savoir pourquoi, ma théorie est que le téléchargement s3 est volumineux et nécessite plusieurs paquets à télécharger, chaque paquet nécessitant une sous-demande d’authentification individuelle? Mais cela ne semble pas correct, je partais du principe qu’une seule sous-demande d’autorisation était appliquée pendant toute la durée de la session.

Je sais que la sous-demande d'autorisation se déclenche plusieurs fois, car dans le code de sous-demande, j'ai ajouté des fonctionnalités de journalisation qui affichent les entrées en double pour une seule demande.

Quelqu'un at-il plus d'informations à ce sujet?

Ci-dessous ma configuration nginx (cela se produit avec et sans le auth_request_set directive en place)

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;
}
Radmilla Mustafa
la source

Réponses:

1

Le problème n'était pas que plusieurs sous-requêtes étaient des problèmes par requête unique, mais que le serveur S3 auquel le serveur mandataire avait été envoyé répondait avec 206 réponses de contenu partiel, ce qui obligeait le client à émettre des requêtes ultérieures pour récupérer le reste du contenu (ce qui doit correctement être réitéré). via une nouvelle sous-demande).

Cela n’a pas été identifié plus tôt car Firebug condensait la chaîne de contenu partiel 206 en un seul 200 dans les journaux du réseau. Je n’étais donc pas immédiatement au courant que cela se passait dans les coulisses tant que je n’ai pas remarqué que S3 ne donnerait pas de réponses 206 lorsque l’utilisateur l'agent est wget!

Radmilla Mustafa
la source