Без перезапуска или изменения конфигурации nginx иногда отправляет неполные ответы. Сегодня я смог воспроизвести это, но все еще не знаю, в чем проблема и как ее исправить.
Я поместил файл размером 5 МБ в путь расположения/алиаса сайта, который настроен на использование nginx. Нет php5-fpm, модулей и т. д., только nginx для обслуживания статических файлов.
Во время тестирования к серверу не обращается ни один другой пользователь, нет http-доступа, кроме моих тестовых запросов.
Загрузка не удалась, и Google Chrome показывает в журнале трафика, что было 2 запроса, хотя я указал http-адрес для загрузки только ОДИН РАЗ и не было никакого перенаправления или другого второго запроса, инициированного мной.
Та же проблема и в access.log сервера:
ТЕСТ1
[14/May/2014:14:06:53 +0200] "GET /dev/test_test.m4v HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/May/2014:14:06:53 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 130680 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/32.0.1700.10
[14/May/2014:14:07:15 +0200] "GET /dev/test_test.m4v HTTP/1.1" 206 1 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/May/2014:14:07:15 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 114684 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/32.0.1700.10
Вы можете видеть, что всегда есть один запрос с размером ответа = 1 и другой со смешанным размером, но > 1. Однако результат в браузере всегда один и тот же. => неисправный ответ, неудачная загрузка.
Чтобы убедиться, что это не связано с http status/response 206, я добавляю max_ranges 0;
в конфигурацию и повторяю попытку -> test2.
ТЕСТ2
[14/May/2014:14:11:36 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 152460 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/May/2014:14:11:38 +0200] "GET /dev/test_test.m4v HTTP/1.1" 200 142296 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/32.0.1700.107 Safari/537.36"
Тот же результат в браузере. Всегда неудачная загрузка/запрос, а размер в access.log всегда разный, как случайный кусок или размер ответа.
Статус сервера: iowait, RAM, cpu почти простаивают. Высокой нагрузки или ограничений нет.
Это известная проблема или ошибка или вы знаете, как ее исправить?
решение1
При таком простом сценарии я почти уверен, что у вас есть брандмауэр, устройство IDS/IPS или что-то еще перед вашим сервером nginx, что мешает загрузкам. Если сомневаетесь, обратитесь к своему интернет-провайдеру.