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

Beschreibung der HTML-Meta-Viewport-Attribute

Was ist ein Ansichtsfenster? Mobile Browser platz...

Ubuntu 20.04: Beispiel zum Ändern der IP-Adresse

veranschaulichen: Als ich heute das letzte Experi...

JS implementiert einen Stoppuhr-Timer

In diesem Artikelbeispiel wird der spezifische JS...

Über die 4 Zusatzfunktionen von Vuex

Inhaltsverzeichnis 1. Zusatzfunktionen 2. Beispie...

Erläuterung der Array-Verarbeitung in React und Redux

Dieser Artikel stellt einige häufig verwendete Fu...

Vue implementiert einen Einkaufswagen, der die Einkaufsmenge ändern kann

In diesem Artikel erfahren Sie, wie Sie mit Vue d...

Beispielcode für kreisförmigen Hover-Effekt mit CSS-Übergängen

Dieser Artikel stellt vor Online-Vorschau und Dow...

Tutorial zur Änderung des Root-Passworts in MySQL 5.6

1. Nach der Installation von MySQL 5.6 kann es ni...

So verwenden Sie die REM-Anpassung in Vue

1. Entwicklungsumgebung vue 2. Computersystem Win...

Das Vue-Projekt implementiert eine Fortschrittsbalkenfunktion für den Dateidownload

Im täglichen Geschäftsleben gibt es zwei gängige ...