Ohne Neustart oder Änderung der Konfiguration sendet nginx manchmal unvollständige Antworten. Heute konnte ich es gut reproduzieren, weiß aber immer noch nicht, was falsch ist oder wie ich es beheben kann.
Ich habe eine 5 MB große Datei in den Standort-/Aliaspfad der Site eingefügt, den nginx laut Konfiguration verwenden soll. Es gibt kein php5-fpm, keine Module usw., nur nginx zum Bereitstellen statischer Dateien.
Beim Testen greift kein anderer Benutzer auf den Server zu, kein http-Zugriff außer meinen Testanfragen.
Der Download schlägt fehl und Google Chrome zeigt im Verkehrsprotokoll an, dass es zwei Anfragen gab, obwohl ich die HTTP-URL für den Download nur EINMAL eingegeben habe und keine Weiterleitung oder andere von mir initiierte zweite Anfrage erfolgte.
Dasselbe Problem auch im access.log des Servers:
TEST1
[14/Mai/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, wie Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/Mai/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, wie Gecko) Chrome/32.0.1700.10
[14/Mai/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, wie Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/Mai/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, wie Gecko) Chrome/32.0.1700.10
Sie können sehen, dass es immer eine Anfrage mit Antwortgröße = 1 und eine andere mit gemischter Größe, aber >1 gibt. Das Ergebnis im Browser ist jedoch immer dasselbe. => fehlerhafte Antwort, fehlgeschlagener Download.
Um sicherzustellen, dass es nicht mit dem HTTP-Status/der HTTP-Antwort 206 zusammenhängt, füge ich es max_ranges 0;
der Konfiguration hinzu und versuche es erneut -> Test2.
TEST2
[14/Mai/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, wie Gecko) Chrome/32.0.1700.107 Safari/537.36"
[14/Mai/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, wie Gecko) Chrome/32.0.1700.107 Safari/537.36"
Gleiches Ergebnis im Browser. Download/Anforderung sind immer fehlgeschlagen und die Größe in access.log ist immer unterschiedlich, wie etwa zufällige Block- oder Antwortgröße.
Serverstatus: iowait, RAM, CPU sind fast im Leerlauf. Es gibt keine hohe Belastung oder Einschränkung.
Handelt es sich hierbei um ein bekanntes Problem oder einen bekannten Fehler, oder wissen Sie, wie man es behebt?
Antwort1
Bei einem so einfachen Szenario bin ich ziemlich sicher, dass Sie eine Firewall, ein IDS/IPS-Gerät oder etwas anderes vor Ihrem Nginx-Server haben, das Downloads stört. Wenden Sie sich im Zweifelsfall an Ihren ISP.