Vollständige Schritte zum Bereitstellen einer Front-End- und Back-End-getrennten Nginx-Konfiguration

Vollständige Schritte zum Bereitstellen einer Front-End- und Back-End-getrennten Nginx-Konfiguration

Vorwort

Es ist ein Klischee. Hier werde ich über mein Verständnis der Trennung von Front-End und Back-End sprechen. Eine einfache Trennung ist nichts anderes als das Entfernen der ursprünglichen MVC-Ansichtsebene und deren Umwandlung in einen unabhängigen Servlet-Dienst. Die Servlets sind über http verbunden. Der Ansichts-Servlet-Container kann hier jeder beliebige serverseitige Dienst sein, beispielsweise Tomcat, Apache, Nginx oder IIS. Hier nehmen wir das häufig verwendete Nginx als Beispiel, um eine kurze Einführung zu geben.

Bedarfsanalyse

Beginnen wir mit einer Bedarfsanalyse.

  • Einzelprojekt
    • Ein einzelnes Projekt bedeutet, dass ein Front-End-Dienst auf einem Server bereitgestellt wird, wodurch www.xxx.com => index.html zu einem einzelnen Punkt wird.
  • Mehrere Projekte
    • Multiprojekt bedeutet, dass ein Server mit mehreren Front-End-Diensten eingesetzt wird, sodass www.xxx.com/a => a.html, www.xxx.com/b => b.html usw. auf mehrere Sites verweisen können.
  • Fordern Sie einen Agenten an.
  • Neuschreiben der Cookie-Domäne.
  • Cookie-Pfad überschreiben.

Tipp: Besser ist es, hier conf.d/*.conf zu schreiben, damit die Konfiguration separat bearbeitet werden kann.

Öffentliche Konfiguration

Server{
 listen 80; # Port server_name _ konfigurieren; # Domänennamen konfigurieren charset utf-8; # Kodierung access_log /xxx/log/nginx_access.log main; # Erfolgsprotokoll error_log /xxx/log/nginx_error.log error; # Fehlerprotokoll index index.html; # Dateireihenfolge für die Suche festlegen $root /xxx/nginx/; # Variableneinstellung, öffentlichen Pfad festlegen # Anderer Speicherort
}

Bitte erstellen Sie manuell entsprechende Dateien unter /xxx/log/nginx_access.log und /xxx/log/nginx_error.log. Beim ersten Ausführen von Nginx Reload kann ein Fehler auftreten.

Der $root-Pfad von set ist ein absoluter Pfad und access_log und error_log sind ebenfalls absolute Pfade.

Einzelprojektkonfiguration

Verzeichnisstruktur

nginx
|----- index.html
|----- benutzer.html

Standortkonfiguration

Standort / {
	Wurzel $root;
}

Die einfachste Konfiguration auf Basis des Stammpfads sieht folgendermaßen aus. Dabei muss lediglich ein Pfad über den Standort konfiguriert und dann auf die Datei index.html im Ordner $root verwiesen werden.

Multiprojektkonfiguration

Verzeichnisstruktur

nginx
|----- ein
    |----- index.html
|----- b
    |----- index.html

Mehrere Standortkonfigurationen

Standort ^~ /a {
  Alias ​​$root/a;
}

Standort ^~ /b {
  Alias ​​$root/b;
}

Standort / {
  Wurzel $root;
}

Der einzige Unterschied zwischen den Nachahmerprojekten ist der Unterschied zwischen Root und Alias. Root bezieht sich auf den absolut passenden Pfad der Datei, während Alias ​​eine relative Übereinstimmung ist. Root kann in http, Server und Standort konfiguriert werden, während Alias ​​nur im Standort konfiguriert werden kann. Ich habe auch den regulären Ausdruck ^~ hinzugefügt. Beim Abgleichen von /a oder /b muss der tatsächliche Pfad der Ressource der durch den Alias ​​angegebene Pfad sein, unabhängig vom Standortpfad. Auf diese Weise kann ich dafür sorgen, dass /a und /b übereinstimmende Pfade haben und zu festen Pfaden springen. Dies ist in Front-End-Projekten im SPA-Stil sehr nützlich, da es tatsächlich nur eine index.html-Datei als Kerndatei gibt (Ressourcendateien sind eine andere Sache). Auf diese Weise kann ich immer zu index.html springen, um sicherzustellen, dass der Browser beim manuellen Aktualisieren nicht basierend auf dem Stammpfad in anderen Pfaden des Servers nach Ressourcen sucht. Legen Sie dann den Stammpfad von Spa fest, und /b muss übereinstimmen.

Warum besteht eine solche Nachfrage? Das Front-End ist leichtgewichtig und wir verwenden diesen Mechanismus, um Server zu sparen und den gleichen Geschäftstyp zu aggregieren. Genauso wie Sie admin.xxxx.com/a => Operations Management Desk und admin.xxxx.com/b => ERP Management Desk möchten. Wir müssen nur den Unterpfad unter dem Administratordomänennamen ausschneiden. Einfach und leicht.

Weiterleitung der Anfrage

Standort ^~ /api {
  Proxy-Passwort http://api.xxx.com/;
}

Das ist ganz einfach. Ich vergleiche die /api-Anfrage mit einem regulären Ausdruck und leite die Anfrage über das Attribut proxy_pass an http://api.xxx.com weiter. Du kannst

Cookiedomäne ändern

Manchmal legen wir aus Sicherheitsgründen bestimmte Cookie-Domänenattribute fest, was für die Nginx-Weiterleitung nicht besonders benutzerfreundlich ist. Natürlich gibt es eine Lösung, und sie ist ganz einfach.

Standort {
  proxy_cookie_domain <Domäne dieser Domäne> <Domäne, die Sie ändern möchten>;
}

Ändern des Cookie-Pfads

Wenn wir zur API-Schnittstelle zurückleiten, kann der API-Domänenname manchmal das Cookie nicht abrufen. Neben der Domäne besteht auch die Möglichkeit des Cookie-Pfads. Natürlich ist die Lösung einfach

Standort {
  proxy_cookie_path <Pfad dieser Domäne> <zu ändernder Pfad>;
}

Nachträgliche Optimierung

Dies ist nur das einfachste Beispiel für eine Nginx-Konfiguration. Es gibt auch Konfigurationen wie das Aktivieren von GZIP, Cache-Einstellungen, Plug-Ins zum Zusammenführen von Ressourcenanforderungen, das Festlegen von 50x- und 40x-Seiten, das Beurteilen von Sprüngen auf Mobilgeräten und PCs usw. Nginx ist immer noch sehr leistungsstark.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Detailliertes Tutorial zum Bereitstellen eines Springboot-Projekts mit Nginx auf dem Server (JAR-Paket)
  • Detaillierte Erläuterung der Einrichtung und Grundkonfiguration des Nginx-Servers
  • Tutorial zur Nginx-Standortkonfiguration von Grund auf
  • Detailliertes Tutorial zum Starten des Nginx-Konfigurationsdienstes
  • Sogar ein Anfänger kann die Bereitstellung des Nginx-Dienstes ohne Grundkenntnisse abschließen

<<:  Eine kurze Diskussion über ereignisgesteuerte Entwicklung in JS und Nodejs

>>:  Einführung in gängige MySQL-Speicher-Engines sowie Parametereinstellung und -optimierung

Artikel empfehlen

Detaillierte Erklärung der dynamischen Komponenten von vue.js

:ist eine dynamische Komponente Verwenden Sie v-b...

Installieren Sie mysql5.7.13 mit RPM in CentOS 7

0. Umwelt Betriebssystem für diesen Artikel: Cent...

Eine kurze Erläuterung zum Anpassen der Hostdatei in Docker

Inhaltsverzeichnis 1. Befehl 2. docker-compose.ym...

Detaillierte Erklärung der MySQL-Binlog-Verwendung

binlog ist eine binäre Protokolldatei, die alle D...

MySQL wählt die richtige Speicher-Engine

Wenn es um Datenbanken geht, ist eine der am häuf...

Hinweise zur Adresszuordnung von Gerätetreibern im Linux-Kernel

#include <asm/io.h> #define ioremap(Cookie,...

So installieren Sie das Programm setup.py unter Linux

Führen Sie zuerst den Befehl aus: [root@mini61 se...

Das Frontend erstellt und ändert CAD-Grafikdetails über JavaScript

Inhaltsverzeichnis 1. Aktuelle Situation 2. CAD-G...

So ändern Sie das Root-Benutzerkennwort in MySQL 8.0.16, WinX64 und Linux

Grundlegende Vorgänge wie die Verbindung zur Date...

Beispiele für die Verwendung von HTML-Metadaten

Beispielverwendung Code kopieren Der Code lautet w...

Detaillierte Erklärung der Ansichten in MySQL

Sicht: Ansichten in MySQL haben viele Ähnlichkeit...

Bringen Sie Ihnen bei, wie Sie coole Barcode-Effekte erstellen

Stellungnahme : In diesem Artikel erfahren Sie, w...