So konfigurieren Sie Nginx für die Verwendung benutzerdefinierter Fehlerseiten unter CentOS 7

Einführung

Nginx ist ein leistungsstarker Webserver, der Inhalte mit Flexibilität und Leistung bereitstellt. Beim Entwerfen Ihrer Webseiten ist es häufig hilfreich, jeden Inhalt anzupassen, den Ihre Benutzer sehen. Dies schließt Fehlerseiten für den Fall ein, dass Inhalte angefordert werden, die nicht verfügbar sind. In diesem Handbuch wird gezeigt, wie Nginx für die Verwendung benutzerdefinierter Fehlerseiten unter CentOS 7 konfiguriert wird.

Voraussetzungen

Um mit diesem Handbuch beginnen zu können, benötigen Sie einen Benutzer ohne Rootberechtigung mit den Rechten "+ sudo +". Sie können einen Benutzer dieses Typs einrichten, indem Sie unserer initial setup guide for CentOS 7 folgen. Außerdem muss Nginx auf Ihrem System installiert sein. Weitere Informationen zum Einrichten finden Sie unter this guide.

Erstellen Ihrer benutzerdefinierten Fehlerseiten

Zu Demonstrationszwecken erstellen wir einige benutzerdefinierte Fehlerseiten, Ihre benutzerdefinierten Seiten unterscheiden sich jedoch offensichtlich.

Wir legen unsere benutzerdefinierten Fehlerseiten im Verzeichnis "+ / usr / share / nginx / html " ab, in dem CentOS Nginx das Standard-Stammverzeichnis für Dokumente festlegt. Wir erstellen eine Seite für 404-Fehler mit dem Namen " custom_404.html " und eine Seite für allgemeine 500-Level-Fehler mit dem Namen " custom_50x.html +". Sie können die folgenden Zeilen verwenden, wenn Sie nur testen. Andernfalls platzieren Sie Ihre eigenen Inhalte an folgenden Orten:

echo "<h1 style='color:red'>Error 404: Not found :-(</h1>" | sudo tee /usr/share/nginx/html/custom_404.html
echo "<p>I have no idea where that file is, sorry.  Are you sure you typed in the correct URL?</p>" | sudo tee -a /usr/share/nginx/html/custom_404.html
echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /usr/share/nginx/html/custom_50x.html
echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /usr/share/nginx/html/custom_50x.html

Wir haben jetzt zwei benutzerdefinierte Fehlerseiten, die wir bedienen können, wenn Clientanforderungen zu unterschiedlichen Fehlern führen.

Konfigurieren von Nginx zur Verwendung Ihrer Fehlerseiten

Jetzt müssen wir Nginx nur mitteilen, dass diese Seiten verwendet werden sollen, wenn die richtigen Fehlerbedingungen auftreten. Wir müssen unsere Serverblöcke anpassen. Unter CentOS 7 befindet sich der primäre Serverblock in der Datei "+ / etc / nginx / nginx.conf +". Dieser Serverblock wird konfiguriert. Sie sollten jedoch die anderen von Ihnen konfigurierten Serverblöcke anpassen:

sudo nano /etc/nginx/nginx.conf

Suchen Sie in der Datei den Block, der den Serverkontext definiert. Wir können Nginx jetzt auf unsere benutzerdefinierten Fehlerseiten verweisen.

Direkte 404-Fehler auf der benutzerdefinierten 404-Seite

Die CentOS Nginx-Konfigurationsdatei definiert bereits eine 404-Fehlerseite mit der Direktive + error_page +. Wir müssen dies ändern, damit beim Auftreten eines 404-Fehlers (wenn eine angeforderte Datei nicht gefunden wird) die von Ihnen erstellte benutzerdefinierte Seite bereitgestellt wird. Wir passen den zugeordneten Speicherortblock für die Datei an, damit wir sicherstellen können, dass der Stamm dem Speicherort unseres Dateisystems entspricht und dass auf die Datei nur über interne Nginx-Weiterleitungen zugegriffen werden kann (nicht direkt von Clients anzufordern):

/etc/nginx/nginx.conf

http {

   . . .

   server {

       . . .

       error_page 404 /;
       location = / {


       }

       . . .
   }
}

Normalerweise müssten wir das + root + nicht im neuen Location-Block setzen, da es mit dem root im Server-Block übereinstimmt. Wir werden hier jedoch ausdrücklich darauf hingewiesen, dass unsere Fehlerseiten auch dann angezeigt werden, wenn wir unseren regulären Webinhalt und das zugehörige Dokumentstammverzeichnis an einen anderen Speicherort verschieben.

Direkte 500-Level-Fehler auf der benutzerdefinierten 50x-Seite

Als Nächstes können wir die Direktiven hinzufügen, um sicherzustellen, dass Nginx bei 500-Level-Fehlern (serverbezogenen Problemen) die andere benutzerdefinierte Seite bedient, die wir erstellt haben. Dies folgt genau der Formel, die wir im letzten Abschnitt verwendet haben. Dieses Mal haben wir mehrere 500-Level-Fehler festgelegt, die alle die Seite "+ custom_50x.html +" verwenden:

/etc/nginx/nginx.conf

http {

   . . .

   server {

       . . .

       error_page 404 /custom_404.html;
       location = /custom_404.html {
           root /usr/share/nginx/html;
           internal;
       }

       error_page  500 502 503 504 /;
       location = / {


       }




   }
}

Unten haben wir außerdem einen Dummy-FastCGI-Pass hinzugefügt, damit wir unsere 500-Level-Fehlerseite testen können. Dies wird nicht korrekt funktionieren, da das Backend nicht existiert. Wenn Sie hier eine Seite anfordern, können wir testen, ob 500-Level-Fehler unsere benutzerdefinierte Seite bedienen.

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Starten Sie Nginx neu und testen Sie Ihre Seiten

Testen Sie die Syntax Ihrer Konfigurationsdatei, indem Sie Folgendes eingeben:

sudo nginx -t

Wenn Fehler gemeldet wurden, beheben Sie diese, bevor Sie fortfahren. Wenn keine Syntaxfehler zurückgegeben werden, starten Sie Nginx neu, indem Sie Folgendes eingeben:

sudo systemctl restart nginx

Wenn Sie nun die Domain oder IP-Adresse Ihres Servers aufrufen und eine nicht vorhandene Datei anfordern, sollte die von uns eingerichtete 404-Seite angezeigt werden:

http:///thiswillerror

Wenn Sie zu dem Ort gehen, den wir für den FastCGI-Pass eingerichtet haben, wird auf unserer benutzerdefinierten Seite mit 500 Ebenen ein 502 Bad Gateway-Fehler angezeigt:

http:///testing

Sie können jetzt zurückgehen und den gefälschten FastCGI-Pass-Speicherort aus Ihrer Nginx-Konfiguration entfernen.

Fazit

Sie sollten jetzt benutzerdefinierte Fehlerseiten für Ihre Site bereitstellen. Dies ist eine einfache Möglichkeit, die Benutzererfahrung zu personalisieren, auch wenn Probleme auftreten. Ein Vorschlag für diese Seiten ist die Angabe von Links zu Orten, an denen sie Hilfe oder weitere Informationen erhalten können. Wenn Sie dies tun, stellen Sie sicher, dass auf die Verbindungsziele zugegriffen werden kann, auch wenn die zugehörigen Fehler auftreten.