Nginx: Ein Domänenname für den Zugriff auf mehrere Projekte – Methodenbeispiel

Nginx: Ein Domänenname für den Zugriff auf mehrere Projekte – Methodenbeispiel

Hintergrund

Kürzlich stieß ich bei der Bereitstellung mehrerer Projekte auf ein solches Problem: Wie kann ich mit einem Domänennamen auf mehrere Projekte zugreifen? Da ich das Domänenzertifikat und die Domänennamenkonfiguration nicht selbst beantragen wollte, habe ich mir diese Lösung ausgedacht, sie mit der Standortfunktion von Nginx kombiniert, um meine Anforderungen zu erfüllen, und sie dann aufgezeichnet. Das Beispiel verwendet zur Demonstration ein PHP-Projekt und andere Sprachen können auf ähnliche Weise eingesetzt werden. Beispielsweise können Sie für ein Knotenprojekt eine Überprüfung vor Ort durchführen und diese dann mit dem Reverse-Proxy-Modul porxy_pass implementieren.

Einführung in das Standortabgleichmodul

1. Die Präfixanweisung "=" stimmt überein. Wenn die Übereinstimmung erfolgreich ist, werden andere Übereinstimmungen gestoppt.

2. Gewöhnlicher Abgleich von Zeichenfolgenanweisungen. Die Reihenfolge ist von lang nach kurz. Wenn die erfolgreich übereinstimmende Position ^~ verwendet, werden andere Abgleiche beendet (normaler Abgleich).

3. Anweisungen für reguläre Ausdrücke werden in der Reihenfolge in der Konfigurationsdatei abgeglichen, und andere Übereinstimmungen werden gestoppt, wenn sie erfolgreich sind.

4. Wenn im dritten Schritt eine Übereinstimmung vorliegt, verwenden Sie das Ergebnis, andernfalls verwenden Sie das Ergebnis des zweiten Schritts.

Notiz

1. Die Übereinstimmungsreihenfolge besteht darin, zuerst mit der normalen Zeichenfolge und dann mit dem regulären Ausdruck übereinzustimmen. Darüber hinaus erfolgt die Reihenfolge der Übereinstimmung gemeinsamer Zeichenfolgen von lang nach kurz entsprechend der Länge der Zeichen in der Konfiguration. Das heißt, die Reihenfolge der mit gemeinsamen Zeichenfolgen konfigurierten Standorte ist irrelevant. Am Ende führt nginx die Übereinstimmung entsprechend der Länge der Konfiguration aus. Es ist jedoch zu beachten, dass reguläre Ausdrücke in der Reihenfolge in der Konfigurationsdatei getestet werden. Die Suche wird beendet, wenn die erste Übereinstimmung mit dem regulären Ausdruck gefunden wurde.

2. Im Allgemeinen wird nach erfolgreichem Abgleich des Speicherorts der normalen Zeichenfolge auch der Speicherort des regulären Ausdrucks abgeglichen. Es gibt zwei Möglichkeiten, dieses Verhalten zu ändern. Eine besteht darin, das Präfix "=" zu verwenden, das eine strikte Übereinstimmung durchführt und andere Übereinstimmungen sofort nach einer erfolgreichen Übereinstimmung stoppt, während die Anforderung verarbeitet wird. Die andere besteht darin, das Präfix "^~" zu verwenden. Wenn dieses Präfix für eine reguläre Zeichenfolge verwendet wird, weist es nginx an, den regulären Ausdruck nicht zu testen, wenn der Pfad übereinstimmt.

Standort = /uri

= zeigt eine genaue Übereinstimmung an. Nur eine vollständige Übereinstimmung wird wirksam.

Standort ^~ /uri

^~ beginnt mit einer Präfixübereinstimmung im URL-Pfad und steht vor dem regulären Ausdruck.

Ort ~ Muster

~ beginnt mit einem regulären Ausdruck unter Beachtung der Groß- und Kleinschreibung.

Standort ~* Muster

~* beginnt mit einem regulären Ausdruck ohne Berücksichtigung der Groß-/Kleinschreibung.

Standort /URI

Ohne Modifikatoren bedeutet es auch Präfixübereinstimmung, jedoch nach der Übereinstimmung mit regulären Ausdrücken.

Standort /

Universelle Übereinstimmung, jede Anfrage, die nicht mit anderen Standorten übereinstimmt, wird abgeglichen, was der Standardeinstellung im Switch entspricht.

Konfigurationsbeispiel

Server {
 hören Sie 80;
 Servername test.com;
 index.html index.htm index.php;
 Zeichensatz koi8-r;
 Zugriffsprotokoll /var/log/nginx/host.access.log Haupt;

 #Domänenname + Projekt 1 Name Standort ^~ /a1/ {
   Alias ​​/usr/share/nginx/html/a1/public/;
 }

 #Domänenname + Projekt 2 Name Standort ^~ /a2/ {
   Alias ​​/usr/share/nginx/html/a2/public/;
 }

 Fehlerseite 404 /404.html;

 # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
 
 Fehlerseite 500 502 503 504 /50x.html;
 Standort = /50x.html {
  root /usr/share/nginx/html/500.html;
 }

 #übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht
 
 Standort ~ \.php$ {
  Stamm-HTML;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  fastcgi_params einschließen;
 }
 
 Standort ~ /\.ht {
  alles leugnen;
 }
}

Effektvorschau

1. Besuchen Sie a1 project

2. Besuchen Sie a2 Project

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:
  • Nginx verbietet den IP-Zugriff und erlaubt nur den Domänennamenzugriff
  • Detaillierte Erläuterung der Implementierung von Nginx+Tomcat zur Erzielung einer einzelnen IP, mehrerer Domänennamen und des Zugriffs auf mehrere Sites
  • So konfigurieren Sie Nginx, um zwischen dem PC- oder Mobiltelefonzugriff auf verschiedene Domänennamen zu unterscheiden
  • Springboot+nginx+https+linux, um Lastausgleich und Domänennamenzugriff einfach zu testen
  • Implementierung der Nginx-Konfiguration für den Multi-Port- und Multi-Domain-Name-Zugriff

<<:  Diese Dinge wissen Sie vielleicht nicht über die automatische ID-Inkrementierung in MySQL

>>:  Zusammenfassung der drei Lazy-Load-Methoden lazyLoad mit nativem JS

Artikel empfehlen

Lichtschalter mit js steuern

Verwenden Sie js, um den Lichtschalter zu Ihrer R...

Verwenden von Schleifen in awk

Lernen wir verschiedene Arten von Schleifen kenne...

CSS Polarkoordinaten Beispielcode

Vorwort Das Projekt stellt Anforderungen an Karte...

So verwenden Sie den regulären Matching-Selektor für CSS-Attributwerte (Tipps)

Es gibt drei Typen von regulären Matching-Selekto...

Detaillierter Beispielcode einer MySQL-Batch-Einfügeschleife

Hintergrund Als ich vor einigen Tagen Paging in M...

Verwenden Sie die vertikale Ausrichtung, um Eingabe und Bild auszurichten

Wenn Sie Eingabe und Bild in dieselbe Zeile setzen...

Vue-Statusverwaltung: Verwendung von Pinia statt Vuex

Inhaltsverzeichnis 1. Was ist Pinia? 2. Pinia ist...

Detaillierte Erklärung des Synchronisierungsmodifikators von Vue

Inhaltsverzeichnis 1. Anweisungen 2. Modifikatore...

Detaillierte Erklärung der Schleifenverwendung in Javascript-Beispielen

Aus Langeweile habe ich ein paar einfache Übungen...

Natives Javascript+CSS, um den Karusselleffekt zu erzielen

Dieser Artikel verwendet Javascript + CSS, um den...