3 votes

Firefox ne télécharge pas périodiquement les fichiers CSS depuis le serveur nginx via HTTP2 avec SSL

Lorsque j'utilise Firefox pour accéder à l'un de mes sites contenant de nombreux fichiers CSS, il arrive périodiquement que tous les fichiers CSS ne soient pas téléchargés.

En regardant dans le panneau de contrôle du développeur dans Firefox (F12), je vois que, lorsque le problème se produit, les fichiers ont un statut = 0, presque comme si la demande n'avait jamais été envoyée au serveur, mais en regardant le serveur, la demande est là.

J'ai essayé de simplifier le problème autant que possible, et j'ai réussi à le réduire à un fichier html qui contient 100 fichiers CSS, et un peu de javascript qui détectera automatiquement quand le problème se produit.

Ceci dans le but de permettre aux gens de tester plus facilement leurs propres installations, et de prouver que je ne suis pas simplement fou.

Paramètres d'essai :

Nouvelle version de debian 9 sur GCP (également testée sur centOS)

nginx 1.10.3 (mais cela arrive aussi avec les dernières versions stable et mainline)

HTTPS/SSL activé (testé avec SSL auto-signé, Let's encrypt et commercial)

HTTP2 activé

Firefox 66 (testé également avec Firefox 65)

Maintenant, lorsque j'accède à mon HTML de test, le javascript rechargera la page jusqu'à ce que l'erreur se produise, puis affichera une alerte. Cela peut prendre de quelques secondes à cinq minutes, mais cela se produit généralement dans la première minute.

Firefox téléchargera les premiers fichiers CSS et semblera ensuite sauter le reste, ou sautera 20-30-40 fichiers et essaiera à nouveau, les fichiers sautés auront le statut 0. le journal d'accès de nginx indiquera qu'il a répondu avec un statut 200 ou 304, mais firefox n'affichera jamais cette information.

Le kit de test html/css peut être téléchargé ici : Paquet de test html

Je ne suis pas sûr à 100 % de qui/quoi est en cause ici

Cela pourrait facilement être moi, mais si c'est le cas, personne ne devrait être en mesure de reproduire mes résultats, et plusieurs personnes l'ont déjà fait

Il pourrait s'agir de Firefox ou de nginx, ou d'une combinaison des deux.

Toute aide serait grandement appréciée, je me frappe la tête contre le mur depuis deux jours.

Édition / clarification :

Je me rends compte que je ne devrais jamais "forcer" un utilisateur à télécharger 100 fichiers CSS sur un serveur de production :)

100 était juste le nombre pour lequel les résultats étaient très faciles et rapides à reproduire, et j'ai donc choisi 100 pour le paquet de test, afin qu'il soit plus facile/rapide pour vous de reproduire le problème par vous-mêmes.

1voto

noir04 Points 41

En raison de l'absence de réponses et d'un léger déraillement (sans rancune Michael Hampton, j'espère :) ), j'ai fini par déposer un bogue auprès de l'équipe de Firefox : https://bugzilla.mozilla.org/show_bug.cgi?id=1538978

Le bogue s'est avéré être un duplicata d'autres bogues, tous visibles sur bugzilla.

En résumé, nginx envoie un "goaway" lorsqu'il atteint sa limite http2_max_requests.

Firefox ne gère pas cela aussi bien, et produit donc quelques problèmes

Chrome le gère un peu mieux, il semble attendre un peu puis réessayer.

Je ne sais pas vraiment qui est "fautif", mais un moyen de réduire considérablement le problème est de fixer http2_max_requests à un nombre très élevé, disons 500 000, la valeur par défaut étant 1000.

http2_max_requests 500000;

Je fonctionne ainsi depuis quelques semaines, sans aucun problème. Donc Problème "résolu"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X