Warum empfängt der Browserclient Antworten von einem NGINX-Server an meiner Remoteadresse, wenn mein NGINX-Server ausgefallen ist?

Warum empfängt der Browserclient Antworten von einem NGINX-Server an meiner Remoteadresse, wenn mein NGINX-Server ausgefallen ist?

Ich beobachte ein seltsames Verhalten, das ich nicht erklären kann.

  • Ich verwende Chrome Version 110.0.5481.77 (Offizieller Build) (64-Bit)

  • Ich verwende nginx/1.22.1, um eine gebündelte Front-End-App bereitzustellen.

  • Wenn ich mein App-Bundle unter IP:443 anfordere, erhalte ich ein unvollständiges Bundle, das sich nicht in meinem öffentlichen Verzeichnis befindet und in der Konsole wird ein Fehler angezeigt: net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK).

  • Die Remote-Adresse des Servers stimmt mit meiner Remote-Adresse, Port 443, überein.

  • Die Größe der Antwort beträgt in den Entwicklertools 65,5 KB.

    Response Header Server: nginx/1.22.0
    
    ETag: W/"SOME ETAG HASH"
    
  • Diese Antwort wird auch zurückgegeben, wenn mein NGINX-Server NICHT LÄUFT. Um es klarzustellen:

  • Manchmal sendet mein NGINX-Server die richtigen statischen Dateien. Aber nach einiger Zeit sendet er nicht mehr die richtigen statischen Dateien und sendet ein unvollständiges Paket.

  • Wenn mein NGINX-Server nicht läuft, wird dieses Paket trotzdem gesendet.

Ich bin verwirrt, weil:

  1. Ich habe keinen eigenen Cache eingerichtet
  2. Ich verwende nginx/1.22.1, NICHT nginx/1.22.0, das vom falschen Bundle angegeben wird
  3. Mein Server ist möglicherweise nicht aktiv, wenn ich diese Antwort erhalte
  4. netstat -nptwc auf meinem Host zeigt:
     tcp 0 0 192.168.1.14:42384 IP:443 TIME_WAIT -
     tcp 0 0 192.168.1.14:49090 IP:443 ESTABLISHED 245476/chrome --typ
    
  5. netstat -nptwcauf meinem Host wird kein Datenverkehr von meinem Host angezeigt.
  6. Ich sehe keinen Serververkehr auf dem Host, wenn dieses Paket zurückgegeben wird.

Okay, was ist hier also los … wird die Antwort meines Webservers irgendwo außerhalb meines Servers zwischengespeichert???

Antwort1

Es ist möglich, dass die Antwort irgendwo außerhalb Ihres Servers zwischengespeichert wird, beispielsweise auf einem Proxyserver oder einem Content Delivery Network (CDN).

Wenn Sie über ein CDN (z. B. CloudFlare) auf eine Website zugreifen, speichert das CDN bestimmte statische Dateien, z. B. Bilder oder JavaScript-Dateien, auf Servern zwischen, die näher am Benutzer sind. Dies kann die Leistung der Website verbessern. Es ist möglich, dass das unvollständige Paket aus einem CDN-Cache bereitgestellt wird. Dies könnte erklären, warum die Antwort auch dann zurückgegeben wird, wenn Ihr NGINX-Server nicht ausgeführt wird.

Eine weitere Möglichkeit ist, dass sich zwischen Ihrem Browser und Ihrem NGINX-Server ein Caching-Proxy befindet. Dies könnte ein Reverse-Proxy sein, der auf Ihrem Server installiert ist, oder ein separater Proxy-Server, der an einer anderen Stelle in Ihrem Netzwerk oder im Netzwerk Ihres Internetdienstanbieters installiert ist.

Sie können versuchen, Ihre Netzwerkkonfiguration zu überprüfen, um festzustellen, ob Caching-Proxys oder CDNs vorhanden sind, die so konfiguriert sind, dass sie Inhalte für Ihre Domain bereitstellen. Sie können auch versuchen, den Browser-Cache zu leeren und alle Caching-Plugins oder -Erweiterungen zu deaktivieren, die das Problem verursachen könnten.

Antwort2

In meinem Fall gab es ein NAT-Problem an unserem LAN-Gateway. Der Datenverkehr zur öffentlichen IP wurde an zwei Server weitergeleitet, von denen einer uns nicht bekannt war.

verwandte Informationen