Назад | Перейти на главную страницу

Firefox периодически не загружает файлы CSS с сервера nginx через HTTP2 с SSL

Когда я использую Firefox для доступа к одному из моих сайтов с большим количеством файлов CSS, периодически загружаются не все файлы CSS.

Заглянув в панель управления разработчика в Firefox (F12), я вижу, что, когда возникает проблема, файлы имеют статус = 0, почти как запрос никогда не отправлялся на сервер, но, глядя на сервер, запрос уже есть.

Я попытался максимально упростить проблему, и мне удалось уменьшить ее до html-файла, который получает 100 файлов CSS и некоторый javascript, который автоматически обнаруживает, когда возникает проблема.

Это сделано для того, чтобы людям было легче тестировать их собственные установки, и чтобы попытаться доказать, что я не просто сумасшедший.

Параметры теста:

Свежий debian 9 на GCP (также тестировался на CentOS)

nginx 1.10.3 (но это также происходит в последних стабильных и основных версиях)

HTTPS / SSL включен (протестировано с использованием самозаверяющего, шифрования и коммерческого SSL)

HTTP2 включен

Firefox 66 (также тестировался с Firefox 65)

Теперь, когда я получаю доступ к своему тесту HTML, javascript перезагружает страницу до тех пор, пока не произойдет ошибка, а затем отобразит предупреждение. Это может занять от нескольких секунд до пяти минут, обычно это происходит в течение первой минуты.

Firefox загрузит несколько первых файлов CSS, а затем либо пропустит остальные, либо пропустит 20-30-40 файлов, а затем попытается снова, пропущенные файлы будут иметь статус 0. Журнал доступа nginx сообщит, что он ответил либо статусом 200, либо 304 , но firefox никогда не отобразит эту информацию

Тестовый пакет html / css можно скачать здесь: тестовый пакет html

Я не на 100% уверен, кто / что здесь виноват

Это легко мог быть я, но в этом случае никто не сможет воспроизвести мои результаты, а несколько человек уже

Это может быть Firefox, nginx или их комбинация.

Любая помощь будет принята с благодарностью, я бился головой о стену в течение последних двух дней

Правка / уточнение:

Я понимаю, что никогда не должен / никогда "заставлять" пользователя загружать 100 файлов CSS на рабочий сервер :)

100 было просто числом, при котором результаты было очень легко и быстро воспроизвести, поэтому я выбрал 100 для тестового пакета, чтобы вам, ребята, было легче / быстрее воспроизвести проблему самостоятельно.

Из-за отсутствия ответов и небольшого сбоя (надеюсь, без обид, Майкла Хэмптона :)), я сообщил об ошибке команде Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1538978

Ошибка оказалась дубликатом некоторых других ошибок, все это можно увидеть на bugzilla.

Но вкратце, nginx отправляет «отказ», когда достигает своего лимита http2_max_requests.

Firefox не справляется с этим так хорошо, что создает некоторые проблемы.

Chrome справляется с этим немного лучше, кажется, он немного подождет, а затем повторите попытку

Кто виноват, я точно не знаю, но способ значительно уменьшить проблему - установить http2_max_requests на очень большое число, скажем, 500.000, по умолчанию - 1000

http2_max_requests 500000;

Я так бегаю уже несколько недель, без проблем. Итак .. Проблема "решена"