nginx löst das Problem der langsamen Bildanzeige und des unvollständigen Downloads

nginx löst das Problem der langsamen Bildanzeige und des unvollständigen Downloads

Vorne geschrieben

Kürzlich berichtete mir ein Leser, dass beim Zugriff auf seinen Server über einen Browser die Bilder so langsam angezeigt wurden, dass sie im Browser nicht vollständig geladen werden konnten. Beim Herunterladen von Dateien war es noch ärgerlicher, da die Dateien gar nicht vollständig heruntergeladen werden konnten. Und das Seltsame ist, dass es mit dem Netzwerk, in dem sich dieser Reader befindet, kein Problem gibt. Also begann ich, ihm bei der Behebung verschiedener Probleme zu helfen. . .

Problemort

Nach einer Reihe von Untersuchungen (ich werde den Zwischenprozess auslassen und die wichtigsten Punkte direkt schreiben!) wurde schließlich festgestellt, dass das Problem bei Nginx lag. Als ich das Backend-Verwaltungssystem der Reader-Website öffnete, stellte ich fest, dass die Bilder sehr langsam angezeigt wurden und auf dem Nginx-Front-End-Proxy die folgende Fehlermeldung gefunden wurde.

[Fehler] 28423#0: *5 connect() ist beim Verbinden mit Upstream fehlgeschlagen (111: Verbindung abgelehnt)

Ich habe die IP-Adresse des Backend-Servers verwendet, um direkt auf den Dienst zuzugreifen, und festgestellt, dass die Geschwindigkeit ziemlich hoch war. Daher vermutete ich, dass es sich um ein Problem mit der Nginx-Konfiguration handelte.

Hinweis: Beim Herunterladen großer Anhänge oder großer Bilder auf der Seite wird der Download unterbrochen oder das Bild kann nicht angezeigt werden. Vielleicht werden Sie sagen, dass ich mit der Standardkonfiguration von Nginx noch nie auf ein solches Problem gestoßen bin! Was ich sagen möchte, ist: Das liegt daran, dass Ihre Website keine großen Dateien hat, zumindest nicht groß genug, um mit der Standardkonfiguration von Nginx geladen zu werden.

Hier gebe ich einen Abschnitt der Nginx-Konfiguration, wie unten gezeigt.

Standort /Datei {
	 root /home/Datei;
	 Index Index.html Index.htm;
	 Proxy_Set_Header X-Real-IP $Remote_Addr;
	 Proxy_Set_Header Host $host;
	 Proxy-Passwort http://127.0.0.1:8080;
	 Maximale Körpergröße des Clients: 100 m;
	 Client-Body-Puffergröße 128k;
	 Proxy_Verbindungs-Timeout 600;
	 Proxy_Lese_Timeout 600;
	 Proxy_Sendezeitüberschreitung 600;
	 Proxy-Puffergröße 32k;
	 Proxy-Puffer 4 64k;
	 Proxy_Busy_Buffer_Größe 64k;
	 Proxy_Temp_File_Schreibgröße 64k;
}

Nachfolgend sind einige wichtige Parameter aufgeführt.

  • proxy_connect_timeout 600; #Nginx-Verbindungstimeout mit Backend-Server (Proxy-Verbindungstimeout)
  • proxy_read_timeout 600; #Nach erfolgreicher Verbindung die Antwortzeit des Backend-Servers (Proxy-Empfangs-Timeout)
  • proxy_send_timeout 600; #Datenrückgabezeit des Backend-Servers (Proxy-Sende-Timeout)
  • proxy_buffer_size 32k; #Stellen Sie die Puffergröße des Proxyservers (nginx) ein, um Benutzerheaderinformationen zu speichern
  • proxy_buffers 4 32k; #proxy_buffers-Puffer, wenn die durchschnittliche Webseitengröße unter 32k liegt, stellen Sie ihn wie folgt ein
  • proxy_busy_buffers_size 64k; #Puffergröße bei hoher Belastung (proxy_buffers*2)
  • proxy_temp_file_write_size 16k; #Legen Sie die Größe des Cache-Ordners fest. Wenn sie größer als dieser Wert ist, wird die Datei vom Upstream-Server übertragen.

Als ich das sah, fand ich das Problem. Der Nginx dieses Lesers hat die folgende Konfigurationszeile.

Proxy_Temp_File_Schreibgröße 16k;

Die Bilder auf seinem Server sind grundsätzlich zwischen 100 KB und 5 MB groß.

Das Problem liegt in proxy_temp_file_write_size. Wenn die Datei auf dem Server die durch diesen Parameter festgelegte Größe überschreitet, schreibt Nginx die Datei zunächst in ein temporäres Verzeichnis (Standard ist das Verzeichnis /proxy_temp unter dem Nginx-Installationsverzeichnis). Standardmäßig wird Nginx als niemand gestartet. Wenn Sie den Befehl ls -al verwenden, um das Verzeichnis proxy_temp anzuzeigen, ist niemand der Eigentümer des Verzeichnisses proxy_temp. Es ist seltsam, dass keine Berechtigung vorliegt. Überprüfen Sie als Nächstes das übergeordnete Verzeichnis von proxy_temp, das das Nginx-Installationsverzeichnis ist. Ich habe festgestellt, dass niemand keine Berechtigung hatte. Kein Wunder, dass das oben genannte Problem aufgetreten ist.

Lösung des Problems

Sobald das Problem lokalisiert ist, lässt es sich leichter lösen. Es gibt zwei Möglichkeiten, dieses Problem zu lösen, wie unten gezeigt.

  • Richten Sie das Verzeichnis proxy_temp so ein, dass jeder darin schreiben kann, und starten Sie Nginx neu, um das Problem zu lösen.
  • Ändern Sie den Wert von proxy_temp_file_write_size direkt auf einen Wert, der größer als die Größe des Bildes und der Datei ist, und starten Sie Nginx neu.

Wenn das Problem auf die erste Weise gelöst wird und mein Proxy_temp-Verzeichnis beispielsweise /usr/local/nginx/proxy_temp ist, verwenden Sie den folgenden Befehl, um das Verzeichnis /usr/local/nginx/proxy_temp so festzulegen, dass es für jeden beschreibbar ist, und das Problem ist gelöst.

chmod -R 777 /usr/local/nginx/proxy_temp/

Wenn Sie das Problem mit der zweiten Methode lösen möchten, können Sie die Datei nginx.conf wie unten gezeigt direkt ändern.

Standort /Datei {
	 root /home/Datei;
	 Index Index.html Index.htm;
	 Proxy_Set_Header X-Real-IP $Remote_Addr;
	 Proxy_Set_Header Host $host;
	 Proxy-Passwort http://127.0.0.1:8080;
	 Maximale Körpergröße des Clients: 100 m;
	 Client-Body-Puffergröße: 256 KB;
	 Proxy-Verbindungs-Timeout 1200;
	 Proxy_Lese_Timeout 1200;
	 Proxy_Sendezeitüberschreitung 6000;
	 Proxy-Puffergröße 32k;
	 Proxy-Puffer 4 64k;
	 Proxy_Busy_Buffer_Größe 128k;
	 Proxy_Temp_File_Schreibgröße 10 m;
}

Natürlich habe ich diesem Leser auch geholfen, einige andere Konfigurationselemente zu optimieren.

Okay, lasst uns für heute hier aufhören! Vergessen Sie nicht, es zu liken, zu folgen und weiterzuleiten, damit mehr Leute es sehen, lernen und sich gemeinsam verbessern können! !

Oben finden Sie Einzelheiten dazu, wie Nginx das Problem der langsamen Bildanzeige und des unvollständigen Downloads löst. Weitere Informationen dazu, wie Nginx das Problem der langsamen Bildanzeige und des unvollständigen Downloads löst, finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Nginx+FastDFS zum Erstellen eines Image-Servers
  • So erstellen Sie einen Nginx-Image-Server mit Docker
  • So verwenden Sie den Nginx-Proxy zur Ausgabe skalierter Bilder
  • So richten Sie den Nginx-Image-Hotlink-Schutz unter einem CentOS-Server ein
  • So konfigurieren Sie Nginx für den Zugriff auf den Bildpfad und den Abruf der statischen HTML-Seite
  • Erstellen Sie einen einfachen Image-Server mit nginx in einer Linux-Umgebung
  • Konfigurationsbeispiel für den Nginx-Image-Hotlink-Schutz

<<:  JavaScript zur Implementierung der umfassendsten Codeanalyse eines einfachen Einkaufswagens (ES6 objektorientiert)

>>:  Ein möglicher Fehler, wenn MySQL die Summenfunktion auf der Fensterfunktion ausführt

Artikel empfehlen

Ein kurzer Vergleich von Props in React

Inhaltsverzeichnis Props-Vergleich von Klassenkom...

So mounten Sie eine neue Festplatte auf einem Linux-Cloud-Server

Hintergrund Im Unternehmen wurde ein neuer Server...

Eine kurze Erläuterung temporärer MySQL-Tabellen und abgeleiteter Tabellen

Abgeleitete Tabellen Wenn die Hauptabfrage eine a...

Lösung für den Fehler bei der Installation von Docker auf der CentOS-Version

1. Versionsinformationen # Katze /etc/system-rele...

VUE + SpringBoot implementiert die Paging-Funktion

Dieser Artikel stellt hauptsächlich vor, wie pagi...

Einführung und Verwendung von fünf Controllern in K8S

Inhaltsverzeichnis Controllertyp von k8s Beziehun...

So deinstallieren Sie Node und NPM vollständig auf dem Mac

npm deinstallieren sudo npm deinstallieren npm -g...

So implementieren Sie Property Hijacking mit JavaScript defineProperty

Inhaltsverzeichnis Vorwort Deskriptoren Detaillie...

Zusammenfassung der Situationen, in denen MySQL-Indizes nicht verwendet werden

Indextypen in MySQL Im Allgemeinen können sie in ...