Beispiel einer Methode zur Fehlerbehebung beim Lösen von Nginx-Portkonflikten

Beispiel einer Methode zur Fehlerbehebung beim Lösen von Nginx-Portkonflikten

Problembeschreibung

Ein Spring + Angular-Projekt mit getrenntem Front-End und Back-End, das Nginx zur Datenweiterleitung verwendet.

Nginx lauscht auf Port 8100, Front-End-Port 4200 und Back-End-Port 8080.

Konfigurieren Sie MySQL und Redis wie gewohnt im Voraus, importieren Sie die Nginx-Konfigurationsdatei des Projekts und starten Sie dann das Frontend und das Backend erfolgreich.

Dann trat ein Problem auf: Nur eine sehr kleine Anzahl der vom Front-End initiierten Anfragen konnte vom Back-End empfangen werden, und die meisten davon waren 404. Als ich auf den Browser klickte, erschien ständig 404 in der Konsole.

Wenn es nur 404 ist, ist das Problem sehr einfach: Es ist sehr wahrscheinlich, dass die Nginx-Portweiterleitungseinstellungen falsch sind. Das Magische daran ist jedoch, dass es dennoch einige Anfragen gibt, die in den Hintergrund gelangen können.

(Im obigen Bild gibt der Hintergrund relevante Konsoleninformationen aus, wenn das Speichern erfolgreich ist.)

Andere Freunde hatten dieses Problem nicht, also begann ich, der Sache auf den Grund zu gehen.

Fehlerbehebungsprozess

Um herauszufinden, ob es sich um ein Backend- Problem oder ein Nginx- Weiterleitungsproblem handelt, müssen Sie zunächst im Netzwerk des Browsers prüfen, ob die 404-Fehlermeldung vom Backend oder von Nginx zurückgegeben wird.

Nach der Überprüfung stellte ich fest, dass es von Nginx zurückgegeben wurde. Wenn der Hintergrund 404 zurückgibt, werden die Fehlerinformationen in den HTTP-Anforderungsheader geschrieben.

Überprüfen Sie zunächst, ob es einen Konflikt im Abhörport gibt. Verwenden Sie nginx -T, um die vollständige Nginx-Konfigurationsdatei einschließlich der importierten externen Dateien anzuzeigen.

// Testen, ob die Konfigurationsdatei korrekt ist und die komplette Konfigurationsdatei ausgeben nginx -T 

In den Ausgabeergebnissen wird nur 8100 angezeigt, was darauf hinweist, dass trotz der Einführung mehrerer Projekte kein Abhörportkonflikt vorliegt.

Dann habe ich vor, im Nginx-Protokoll nach Hinweisen zu suchen.

Nachdem ich den Protokollmodus von Nginx aktiviert hatte, überprüfte ich die Protokolldateien und fand Tausende von Zugriffsaufzeichnungen.

Die meisten sind 404-Fehler, einige 200-Fehler, aber die Protokolle liefern nicht viele nützliche Informationen.

Schließlich wurde das Problem in der Konfigurationsdatei gefunden:

Für Nginx, das mit HomeBrew installiert wurde, ist der Standard-Abhörport in der globalen Konfigurationsdatei 8080, und der vom Projekt-Backend belegte Port ist ebenfalls 8080.

Obwohl ich nicht viel über die Prinzipien der Portüberwachung und Portbelegung weiß, weiß ich zumindest, dass, da Nginx Port 8080 überwacht, einige Anfragen an Nginx selbst gesendet werden und der andere Teil in den Hintergrund gesendet wird.

Modifizieren Sie daher die globale Konfigurationsdatei, ändern Sie den Standardport und das Problem ist gelöst.

// Ändern Sie die Konfigurationsdatei sudo vim /usr/local/etc/nginx/nginx.conf
// Testkonfigurationsdatei nginx -t
// Nginx neu starten
nginx -s neu laden

Schließlich können alle Anfragen das Backend erreichen.

Zusammenfassen

Als ich anfing, XAMPP zu lernen, hörte ich oft: „Wenn es einen Konflikt mit Port 80 gibt, ändern Sie den Port, zum Beispiel auf 8080.“

Aber wenn 8080 zur Gewohnheit wird, werden einige Projekte auch diesen Port verwenden … also müssen wir das Konfliktproblem lösen.

Wenn Sie den Standardport in Zukunft ändern, wird empfohlen, ihn auf einen Port zu ändern, der wahrscheinlich nicht verwendet wird, z. B. eine Portnummer über 10000, um Konflikte mit dem Port des Projekts zu vermeiden.

Dies ist das Ende dieses Artikels mit Beispielen für Methoden zur Fehlerbehebung bei Nginx-Portkonflikten. Weitere Informationen zu Methoden zur Fehlerbehebung bei Nginx-Portkonflikten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Lösung für den Konflikt zwischen Nginx und Backend-Port

<<:  Natives, benutzerdefiniertes Rechtsklickmenü von js

>>:  MySQL verwendet gespeicherte Prozeduren, um die Methode zur Erfassung von Baumknoten zu implementieren

Artikel empfehlen

Vue-Grundlagen MVVM, Vorlagensyntax und Datenbindung

Inhaltsverzeichnis 1. Vue-Übersicht Offizielle Vu...

MySQL-langsame Abfrage pt-query-digest Analyse des langsamen Abfrageprotokolls

1. Einleitung pt-query-digest ist ein Tool zum An...

Bei verschachtelten MySQL-Transaktionen aufgetretene Probleme

MySQL unterstützt verschachtelte Transaktionen, a...

Detaillierte Erklärung des Unterschieds zwischen tinyint und int in MySQL

Frage: Was ist der Unterschied zwischen int(1) un...

Transkript der Implementierung berechneter Vue-Eigenschaften

In diesem Artikel wird das Implementierungszeugni...

CSS-Spezifikation BEM CSS und OOCSS Beispielcode detaillierte Erklärung

Vorwort Aufgrund der unterschiedlichen Codiergewo...

Implementierung zum Erstellen benutzerdefinierter Images mit Dockerfile

Inhaltsverzeichnis Vorwort Einführung in Dockerfi...

HTML-Multimediaanwendung: Einfügen von Flash-Animationen und Musik in Webseiten

1. Anwendung von Multimedia in HTML_Flash-Animati...

Lernhinweise zum WeChat-Applet: Seitenkonfiguration und -routing

Ich habe kürzlich die Entwicklung kleiner Program...

WeChat-Applet zum Speichern von Alben und Bildern in Alben

Ich entwickle derzeit eine Video- und Tool-App, ä...

Detaillierte Erläuterung des einzeiligen Funktionscodes des Datumstyps in MySQL

Einzeilige Funktionen vom Datumstyp in MySQL: CUR...

Tutorial zur Installation und Konfiguration von VMware Tools für Ubuntu 18.04

Dieser Artikel beschreibt die Installation und Ko...