Konfigurieren Sie nginx so, dass es zur Systemwartungsseite umleitet

Konfigurieren Sie nginx so, dass es zur Systemwartungsseite umleitet

Letztes Wochenende bereitete sich ein Bruderprojekt darauf vor, den Server zu erweitern, um bessere Dienste anbieten zu können. Einige Funktionen des Bruderprojekts wurden mir in Echtzeit bereitgestellt, und ich musste die entsprechenden Systemfunktionen vorübergehend blockieren. Da ich nginx verwendete, konnte ich nginx direkt so konfigurieren, dass es auf die reparierte Systemwartungsseite umleitete.

Die Umleitung von Nginx ist eigentlich sehr einfach. Sie können entweder das Schlüsselwort „return“ oder „rewrite“ verwenden. Da die Umleitung direkt zur statischen Seite springt, sind keine nachfolgenden Vorgänge oder Aufzeichnungen erforderlich, sodass eine direkte permanente 301-Umleitung verwendet wird.

Die Umleitung kann auf dem Server oder an einem bestimmten Standort konfiguriert werden. Nachfolgend finden Sie eine kurze Einführung zu beiden Optionen.

Im Server konfigurieren:

http {
    Server{
        hören Sie 80;
        Servername A.com;

    # Wählen Sie unten eine der Optionen „Zurückgeben“ oder „Umschreiben“ aus. Darunter ist upgrade.html die Eingabeaufforderungsseite, die ich selbst geschrieben habe. Return 301 http://B.com/upgrade.html;  
        # neu schreiben ^/(.*)$ http://B.com/upgrade.html permanent;
        location / { # Folgender Konfigurationsinhalt wird hier weggelassen} } }

Oder konfigurieren Sie am Standort:

http {
    Server{
        hören Sie 80;
        Servername A.com;
        Standort / {
            umschreiben ^/(.*)$ http://B.com/upgrade.html permanent;
  # Folgender Konfigurationsinhalt wird hier weggelassen} } }

Aus den obigen Beispielen können wir ersehen, dass „return“ eine 301-Parameterumleitung verwendet und „rewrite“ eine permanente (natürlich können Sie auch „break“ und „last“ verwenden. Wenn Sie den Unterschied wissen möchten, schauen Sie bitte selbst nach).

Ich weiß nicht, ob Sie bemerkt haben, dass in den beiden obigen Beispielen A.com verwendet wird, um auf B.com umzuleiten. Ich habe versucht, A.com zu verwenden, um direkt auf A.com/upgrade.html umzuleiten, und es wird eine Fehlermeldung ausgegeben, die besagt, dass es zu viele Wiederholungen gibt, was bedeutet, dass es in eine Endlosschleife gerät. Wenn Sie mehrere Domänennamen gleichzeitig verwalten, können Sie A so konfigurieren, dass B umgeleitet wird. Was aber, wenn es nur einen Domänennamen A gibt?

Zu diesem Zeitpunkt wird die if-Bedingung zur Beurteilung verwendet. Hier nehmen wir die Konfiguration im Server als Beispiel:

http {
    Server{
        hören Sie 80;
        Servername A.com;        

        # Beachten Sie, dass nach „if“ ein Leerzeichen stehen muss! ! !
        wenn ($request_uri !~ "/upgrade.html$") {
            Rückgabewert 301 http://A.com/upgrade.html;
        }

        Standort / {
  # Folgender Konfigurationsinhalt wird hier weggelassen}
 } 
}

Das obige Beispiel zeigt, dass, wenn der Zugriffspfad /upgrade.html nicht enthält, eine Weiterleitung zu upgrade.html erfolgt. Zu diesem Zeitpunkt kann die Weiterleitung erfolgreich sein, und es wird keine Aufforderung für zu viele Wiederholungen angezeigt. Es gibt jedoch ein weiteres Problem, nämlich, dass die Bilder in upgrade.html nicht angezeigt werden können. Ich habe keine Zeit, zu untersuchen, wie ich die Weiterleitung der Bilder vermeiden kann. Ich werde später mehr hinzufügen, wenn ich Zeit habe.

Beim Testen der if-Bedingung bin ich auf eine besondere Falle gestoßen, nämlich dass nach dem Hinzufügen der if-Bedingung und dem Neustart von nginx eine Fehlermeldung angezeigt wurde:

Der Job für nginx.service ist fehlgeschlagen, da der Kontrollprozess mit einem Fehlercode beendet wurde. Weitere Informationen finden Sie unter „systemctl status nginx.service“ und „journalctl -xe“.

Geben Sie systemctl status nginx.service ein, um die Fehlerinformationen anzuzeigen, einschließlich nginx: [emerg] unbekannte Anweisung „if($request_uri“ Fehler. Ich habe die Antwort gefunden. Es stellt sich heraus, dass nach „if“ ein Leerzeichen stehen muss!!! Das ist schade. In den Artikeln im Internet, in denen nginxif vorgestellt wird, wurden solch wichtige Informationen nicht erwähnt …

Danke für die Info:

Nach „if“ muss ein Leerzeichen stehen: https://blog.csdn.net/palet/article/details/103394236

Zurückgeben und in nginx neu schreiben: https://blog.csdn.net/u010982507/article/details/104025717

Wissenspunkte-Ergänzung

Konfigurieren Sie nginx so, dass bei der Eingabe einer beliebigen Adresse auf die Wartungsseite umgeleitet wird

Hinweis: Konfigurieren Sie nginx so, dass bei der Eingabe einer beliebigen Adresse auf die Wartungsseite umgeleitet wird

Server {
    hören Sie 80;
    Wurzel /xxx/xxx/src;
    Index Index.html Index.htm;

    Servername test.xxx.com;

    setze $flag 0;
      wenn ($request_uri !~ "(/static/.*)$"){
          setze $flag "${flag}1";
      }
      wenn ($request_uri !~ "/502.html$" ){
          setze $flag "${flag}2";
      }
      wenn ($flag = "012") {
         umschreiben ^(.*) http://test.xxx.com/502.html permanent;
      }

 Standort /{
     ...

Oben finden Sie die Details zur Nginx-Umleitung auf die Systemwartungsseite. Weitere Informationen zur Wartungsseite der Nginx-Umleitung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So leiten Sie den Nginx-Verzeichnispfad um
  • Detaillierte Erläuterung der Nginx-Konfiguration URL-Umleitung-Reverse-Proxy
  • Detaillierte Erklärung der Umleitungsfunktion in Nginx
  • So richten Sie eine 301-Umleitung in der Ngin-Konfiguration und eine 301-Umleitung im Nginx-Unterverzeichnis ein

<<:  Beispiele für minimalistisches Website-Design

>>:  Lösung für das Textüberlaufproblem auf CSS-Flex-Basis

Artikel empfehlen

Lösung für Linux CentOS 6.5 ifconfig kann IP nicht abfragen

Kürzlich sagten einige Freunde, dass sie nach der...

Der einfachste Weg zum Debuggen gespeicherter Prozeduren in MySQL

Ein Kollege hat mir einmal gesagt, ich solle eine...

Mehrere Möglichkeiten zum Sichern einer MySql-Datenbank

mysqldump-Tool-Sicherung Sichern Sie die gesamte ...

Erläuterung des MySQL-Multitabellen-Join-Abfragebeispiels

In tatsächlichen Projekten gibt es Beziehungen zw...

Zwei Möglichkeiten zum korrekten Bereinigen von MySQL-Binlog-Protokollen

mysql bereinigt Binlog-Protokolle korrekt Vorwort...

So erweitern Sie den Speicherplatz eines Linux-Servers

Inhaltsverzeichnis Vorwort Schritt Vorwort Heute ...

Eine kurze Erläuterung der Größeneinheiten in CSS

Die Kompatibilität der Browser wird immer besser....

Prozessdiagramm für die Ideenbereitstellung und Tomcat-Dienstimplementierung

Konfigurieren Sie zunächst die Projektartefakte K...

Der Unterschied zwischen absolutem und relativem Pfad bei der Webseitenerstellung

1. Absoluter Pfad Zunächst einmal bezieht sich de...

Aktivieren Sie den SSHD-Vorgang im Docker

Installieren Sie zunächst den OpenSSH-Server im D...

Details zu Linux-Dateideskriptoren, Dateizeigern und Inodes

Inhaltsverzeichnis Linux - Dateideskriptor, Datei...

So übergeben Sie Parameter über CSS an JS

1. Hintergrund, der durch CSS übergeben werden mu...