So installieren Sie Nginx mit virtuellen Hosts und SSL-Zertifikat

Nginx (kurz für Motor-x) ist ein kostenloser, Open Source, leistungsstarker, leistungsstarker und skalierbarer HTTP- und Reverse-Proxy-Server, ein Mail- und Standard-TCP / UDP-Proxy-Server. Es ist einfach zu bedienen und zu konfigurieren, mit einer einfachen Konfigurationssprache. Nginx ist aufgrund seiner Skalierbarkeit und Leistung die bevorzugte Webserver-Software für die Stromversorgung stark ausgelasteter Websites.

In diesem Artikel wird erläutert, wie Sie Nginx als HTTP-Server verwenden, für die Bereitstellung von Webinhalten konfigurieren, namenbasierte virtuelle Hosts einrichten und SSL für sichere Datenübertragungen erstellen und installieren, einschließlich eines selbstsignierten Zertifikats unter Ubuntu und CentOS .

So installieren Sie Nginx Web Server

Beginnen Sie zunächst mit der Installation des Nginx-Pakets aus den offiziellen Repositorys mithilfe Ihres Paketmanagers (siehe Abbildung).

------------ On Ubuntu ------------ 
$ sudo apt update 
$ sudo apt install nginx 

------------ On CentOS ------------
$ sudo yum update 
$ sudo yum install epel-release 
$ sudo yum install nginx 

Nach der Installation des Nginx-Pakets müssen Sie den Dienst zunächst starten, ihn beim Booten automatisch starten lassen und den Status mithilfe der folgenden Befehle anzeigen. Beachten Sie, dass auf Ubuntusollte es automatisch gestartet und aktiviert werden, während das Paket vorkonfiguriert ist.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx
Starten und überprüfen Sie den Nginx-Status
Starten und überprüfen Sie den Nginx-Status

Zu diesem Zeitpunkt sollte der Nginx-Webserver betriebsbereit sein. Sie können den Status mit dem Befehl netstat überprüfen.

$ sudo netstat -tlpn | grep nginx
Überprüfen Sie den Nginx-Portstatus
Überprüfen Sie den Nginx-Portstatus


Wenn auf Ihrem System eine Firewall aktiviert ist, müssen Sie den Port öffnen 80 und 443 erlauben HTTP und HTTPS Verkehr jeweils durch sie, durch Laufen.

------------ On CentOS ------------
$ sudo firewall-cmd --permanent --add-port=80/tcp
$ sudo firewall-cmd --permanent --add-port=443/tcp
$ sudo firewall-cmd --reload

------------ On Ubuntu ------------ 
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw reload 

Die ideale Methode zum Testen der Nginx-Installation und zum Überprüfen, ob sie ausgeführt wird und Webseiten bedienen kann, besteht darin, einen Webbrowser zu öffnen und auf die IP-Adresse des Servers zu verweisen.

http://Your-IP-Address
OR
http://Your-Domain.com

Eine funktionierende Installation sollte auf dem folgenden Bildschirm angezeigt werden.

Überprüfen Sie die Nginx-Webseite
Überprüfen Sie die Nginx-Webseite

So konfigurieren Sie den Nginx-Webserver

Die Konfigurationsdateien von Nginx befinden sich im Verzeichnis /etc/nginx und die globale Konfigurationsdatei befindet sich unter /etc/nginx/nginx.conf unter CentOS und Ubuntu.

Nginx besteht aus Modulen, die von verschiedenen Konfigurationsoptionen gesteuert werden, die als bekannt sind Richtlinien. EIN Richtlinie kann entweder einfach sein (im Formularnamen und in den mit a abgeschlossenen Werten ;) oder Block (hat zusätzliche Anweisungen mit beigefügt {}). Und eine Blockanweisung, die andere Anweisungen enthält, heißt a Kontext.

Alle Richtlinien werden in der Nginx-Dokumentation auf der Projektwebsite. Weitere Informationen finden Sie hier.

So liefern Sie statische Inhalte mit Nginx im Standalone-Modus

Grundsätzlich kann Nginx verwendet werden, um statische Inhalte wie HTML- und Mediendateien im Standalone-Modus bereitzustellen, in dem nur der Standardserverblock verwendet wird (analog zu Apache, in dem keine virtuellen Hosts konfiguriert wurden).

Wir beginnen mit einer kurzen Erläuterung der Konfigurationsstruktur in der Hauptkonfigurationsdatei.

 
$ sudo vim /etc/nginx/nginx.conf

Wenn Sie sich diese Nginx-Konfigurationsdatei ansehen, sollte die Konfigurationsstruktur wie folgt aussehen. Dies wird als Hauptkontext bezeichnet, der viele andere einfache Anweisungen und Blockanweisungen enthält. Der gesamte Webverkehr wird im http-Kontext verarbeitet.

user  nginx;
worker_processes  1;
.....

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
.....

events {
        .....
}

http {
    server{
        …….
    }
    .....
}

Das Folgende ist ein Beispiel für eine Nginx-Hauptkonfiguration (/etc/nginx/nginx.conf), wobei der obige http-Block eine include-Direktive enthält, die Nginx mitteilt, wo sich Website-Konfigurationsdateien befinden (virtuelle Host-Konfigurationen).

Nginx-Konfigurationsdatei
user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

   include /etc/nginx/mime.types;
   default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    
    include /etc/nginx/conf.d/*.conf;
}

Beachten Sie, dass auf Ubuntufinden Sie auch eine zusätzliche Include-Direktive (include / etc / nginx / sites-enabled / *;), wo das Verzeichnis / etc / nginx / sites-enabled / speichert Symlinks zu den in erstellten Website-Konfigurationsdateien / etc / nginx / sites-available /, um die Sites zu aktivieren. Durch das Löschen eines Symlinks wird diese bestimmte Site deaktiviert.

Basierend auf Ihrer Installationsquelle finden Sie die Standard-Website-Konfigurationsdatei unter /etc/nginx/conf.d/default.conf (wenn Sie von offiziellen installiert NGINX Repository und EPEL) oder / etc / nginx / sites-enabled / default (wenn Sie von Ubuntu-Repositorys installiert haben).

Dies ist unser Beispiel für einen Standard-Nginx-Serverblock unter /etc/nginx/conf.d/default.conf auf dem Testsystem.

server {
    listen    80 default_server;
    listen    [::]:80 default_server;
    server_name    _;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
}

Eine kurze Erläuterung der Anweisungen in der obigen Konfiguration:

  • Hör mal zu: gibt die an Hafen Der Server hört zu.
  • Servername: Definiert den Servernamen, bei dem es sich um exakte Namen, Platzhalternamen oder reguläre Ausdrücke handeln kann.
  • Wurzel: Gibt das Verzeichnis an, aus dem Nginx Webseiten und andere Dokumente bereitstellt.
  • Index: Gibt den Typ (die Typen) der Indexdateien an, die bereitgestellt werden sollen.
  • Ort: Wird verwendet, um Anforderungen für bestimmte Dateien und Ordner zu verarbeiten.

Von einem Webbrowser aus, wenn Sie mit dem auf den Server zeigen Hostname localhost oder seine IP-Adresse verarbeitet die Anfrage und liefert die Datei /var/www/html/index.htmlund speichert das Ereignis sofort in seinem Zugriffsprotokoll (/var/log/nginx/access.log) mit einer 200 (OK) Antwort. Im Fehlerfall (fehlgeschlagenes Ereignis) wird die Meldung im Fehlerprotokoll aufgezeichnet (/var/log/nginx/error.log).

Testen Sie die Nginx-Standardsite
Testen Sie die Nginx-Standardsite

Erfahren Sie mehr über das Anmelden NginxWeitere Informationen finden Sie unter Konfigurieren von benutzerdefinierten Zugriffs- oder Fehlerprotokollformaten in Nginx.

Anstatt die Standardprotokolldateien zu verwenden, können Sie benutzerdefinierte Protokolldateien für verschiedene Websites definieren, wie wir später im Abschnitt „Einrichten namenbasierter virtueller Hosts (Serverblöcke)“ betrachten werden.

So beschränken Sie den Zugriff auf eine Webseite mit Nginx

Um den Zugriff auf Ihre Website / Anwendung oder einige Teile davon einzuschränken, können Sie die grundlegende HTTP-Authentifizierung einrichten. Dies kann im Wesentlichen verwendet werden, um den Zugriff auf den gesamten HTTP-Server, einzelne Serverblöcke oder Standortblöcke zu beschränken.

Erstellen Sie zunächst eine Datei, in der Ihre Zugangsdaten gespeichert werden (Benutzername Passwort) mit dem htpasswd Nützlichkeit.

 
$ yum install httpd-tools       #RHEL/CentOS
$ sudo apt install apache2-utils    #Debian/Ubuntu

Fügen wir dieser Liste als Beispiel den Benutzeradministrator hinzu (Sie können so viele Benutzer wie möglich hinzufügen) -c Mit dieser Option werden die Kennwortdatei und die Option angegeben -B um das Passwort zu verschlüsseln. Sobald Sie getroffen haben [Enter]werden Sie aufgefordert, das Benutzerpasswort einzugeben:

$ sudo htpasswd -Bc /etc/nginx/conf.d/.htpasswd admin

Weisen Sie dann der Kennwortdatei die richtigen Berechtigungen und Eigentumsrechte zu (ersetzen Sie den Benutzer und die Gruppe nginx durch www Daten auf Ubuntu).

$ sudo chmod 640 /etc/nginx/conf.d/.htpasswd
$ sudo chown nginx:nginx /etc/nginx/conf.d/.htpasswd

Wie bereits erwähnt, können Sie den Zugriff auf Ihren Webserver, eine einzelne Website (mithilfe des Serverblocks) oder ein bestimmtes Verzeichnis oder eine bestimmte Datei einschränken. Um dies zu erreichen, können zwei nützliche Anweisungen verwendet werden:

  • auth_basic – Aktiviert die Validierung von Benutzername und Passwort mit dem Befehl „HTTP-Basisauthentifizierung” Protokoll.
  • auth_basic_user_file – Gibt die Datei des Berechtigungsnachweises an.

Als Beispiel zeigen wir, wie Sie das Verzeichnis mit einem Passwort schützen / var / www / html / protected.

server {
    listen         80 default_server;
    server_name    localhost;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
    location /protected/ {
        auth_basic              "Restricted Access!";
        auth_basic_user_file    /etc/nginx/conf.d/.htpasswd;
    }
}

Speichern Sie jetzt die Änderungen und starten Sie den Nginx-Dienst neu.

$ sudo systemctl restart nginx 

Wenn Sie das nächste Mal Ihren Browser auf das oben genannte Verzeichnis verweisen (http: // localhost / protected) Sie werden aufgefordert, Ihre Anmeldeinformationen (Benutzername) einzugeben Administrator und das gewählte Passwort).

Bei einer erfolgreichen Anmeldung können Sie auf den Inhalt des Verzeichnisses zugreifen, andernfalls erhalten Sie aa “401 Autorisierung erforderlich” Error.

So richten Sie namensbasierte virtuelle Hosts (Serverblöcke) in Nginx ein

Der Serverkontext ermöglicht das Speichern und Bereitstellen mehrerer Domänen / Standorte auf derselben physischen Maschine oder auf demselben virtuellen privaten Server (Virtual Private Server, VPS). Für jede Site / Domäne können im http-Kontext mehrere Serverblöcke (die virtuelle Hosts darstellen) deklariert werden. Nginx entscheidet anhand des empfangenen Anforderungsheaders, welcher Server eine Anforderung verarbeitet.

Wir werden dieses Konzept anhand der folgenden Dummy-Domänen demonstrieren, die sich jeweils im angegebenen Verzeichnis befinden:

  • wearetecmint.com – /var/www/html/wearetecmint.com/
  • welovelinux.com – /var/www/html/welovelinux.com/

Weisen Sie als Nächstes die entsprechenden Berechtigungen für das Verzeichnis für jede Site zu.

$ sudo chmod -R 755 /var/www/html/wearetecmint.com/public_html 
$ sudo chmod -R 755 /var/www/html/welovelinux.com/public_html 

Erstellen Sie nun ein Beispiel index.html Datei in jedem public_html Verzeichnis.


    
        www.wearetecmint.com
    

    

This is the index page of www.wearetecmint.com

Erstellen Sie als Nächstes die Serverblock-Konfigurationsdateien für jeden Standort innerhalb der /etc/httpd/conf.d Verzeichnis.

$ sudo vi /etc/nginx/conf.d/wearetecmint.com.conf
$ sudo vi /etc/nginx/conf.d/welovelinux.com.conf

Fügen Sie die folgende Serverblockdeklaration in das Feld ein wearetecmint.com.conf Datei.

wearetecmint.com.conf
server {
    listen         80;
    server_name  wearetecmint.com;
    root           /var/www/html/wearetecmint.com/public_html ;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

Fügen Sie als Nächstes die folgende Serverblockdeklaration in das Feld ein welovelinux.com.conf Datei.

welovelinux.com.conf
server {
    listen         80;
    server_name    welovelinux.com;
    root           /var/www/html/welovelinux.com/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

Starten Sie den Nginx-Webserver neu, um die letzten Änderungen zu übernehmen.

$ sudo systemctl restart nginx

Wenn Sie Ihren Webserver auf die oben genannten Adressen verweisen, werden die Hauptseiten der Dummy-Domänen angezeigt.

http://wearetecmint.com
http://welovelinux.com
Testen Sie Nginx Virtual Hosts-Websites
Testen Sie Nginx Virtual Hosts-Websites

Wichtig: Wenn Sie haben SELinux Wenn diese Option aktiviert ist, kann Nginx in der Standardkonfiguration nicht auf Dateien außerhalb bekannter autorisierter Speicherorte zugreifen (z / etc / nginx für Konfigurationen, / var / log / nginx für Protokolle, / Var / www / html für Webdateien etc ..).

Sie können dies tun, indem Sie entweder SELinux deaktivieren oder den richtigen Sicherheitskontext festlegen. Weitere Informationen finden Sie in diesem Handbuch: mit Nginx und Nginx Plus mit SELinux auf der Nginx Plus-Website.

So installieren und konfigurieren Sie SSL mit Nginx

SSL Zertifikate helfen dabei, sicheres http zu aktivieren (HTTPS) auf Ihrer Site. Dies ist wichtig, um eine vertrauenswürdige / sichere Verbindung zwischen den Endbenutzern und Ihrem Server herzustellen, indem Sie die Informationen verschlüsseln, die an, von oder innerhalb Ihrer Site übertragen werden.

Wir werden beschreiben, wie Sie ein selbstsigniertes Zertifikat erstellen und installieren und eine Zertifikatsignierungsanforderung generieren (CSR) ein SSL-Zertifikat von einer Zertifizierungsstelle zu erwerben (DAS), zur Verwendung mit Nginx.

Selbstsignierte Zertifikate können kostenlos erstellt werden und eignen sich praktisch für Testzwecke und für interne LAN-Dienste. Für öffentlich zugängliche Server wird dringend empfohlen, ein von einer Zertifizierungsstelle ausgestelltes Zertifikat (z. B. Let’s Encrypt) zu verwenden, um die Authentizität zu gewährleisten.

Um ein selbstsigniertes Zertifikat zu erstellen, erstellen Sie zunächst ein Verzeichnis, in dem Ihre Zertifikate gespeichert werden.

$ sudo mkdir /etc/nginx/ssl-certs/

Generieren Sie dann Ihr selbstsigniertes Zertifikat und den Schlüssel mit dem openssl Befehlszeilen-Tool.

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl-certs/nginx.key -out /etc/nginx/ssl-certs/nginx.crt

Lassen Sie uns kurz die im obigen Befehl verwendeten Optionen beschreiben:

  • req -X509 – zeigt, dass wir ein x509-Zertifikat erstellen.
  • -Knoten (NO DES) – bedeutet “Schlüssel nicht verschlüsseln”.
  • -Tage 365 – Gibt die Anzahl der Tage an, für die das Zertifikat gültig ist.
  • -newkey rsa: 2048 – Gibt an, dass der mit dem RSA-Algorithmus generierte Schlüssel 2048-Bit sein soll.
  • -keyout /etc/nginx/ssl-certs/nginx.key – Gibt den vollständigen Pfad des RSA-Schlüssels an.
  • -out /etc/nginx/ssl-certs/nginx.crt – Gibt den vollständigen Pfad des Zertifikats an.
Erstellen Sie ein SSL-Zertifikat und einen Schlüssel für Nginx
Erstellen Sie ein SSL-Zertifikat und einen Schlüssel für Nginx

Öffnen Sie als Nächstes Ihre Konfigurationsdatei für den virtuellen Host und fügen Sie die folgenden Zeilen zu einer Serverblockdeklaration hinzu, die den Port überwacht 443. Wir werden mit der virtuellen Host-Datei testen /etc/nginx/conf.d/wearetecmint.com.conf.

$ sudo vi /etc/nginx/conf.d/wearetecmint.com.conf

Fügen Sie dann die SSL-Direktive zur Nginx-Konfigurationsdatei hinzu. Sie sollte ähnlich wie unten aussehen.

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_trusted_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/nginx.key;
    
    server_name  wearetecmint.com;
    root           /var/www/html/wearetecmint.com/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }

}

Starten Sie nun den Nginx neu und zeigen Sie mit Ihrem Browser auf die folgende Adresse.

https://www.wearetecmint.com
Überprüfen Sie die Nginx SSL-Website
Überprüfen Sie die Nginx SSL-Website

Wenn Sie ein SSL-Zertifikat von einer Zertifizierungsstelle erwerben möchten, müssen Sie wie gezeigt eine Zertifikatsignierungsanforderung (CSR) generieren.

$ sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl-certs/example.com.key -out /etc/nginx/ssl-certs/example.com.csr

Sie können eine CSR auch aus einem vorhandenen privaten Schlüssel erstellen.

$ sudo openssl req -key /etc/nginx/ssl-certs/example.com.key -new -out /etc/nginx/ssl-certs/example.com.csr

Dann müssen Sie die senden CSR das wird zu einem generiert DAS um die Ausstellung eines CA-signierten SSL-Zertifikats anzufordern. Sobald Sie Ihr Zertifikat von der Zertifizierungsstelle erhalten haben, können Sie es wie oben gezeigt konfigurieren.

Lesen Sie auch: Der ultimative Leitfaden zum Sichern, Härten und Verbessern der Leistung von Nginx Web Server

Zusammenfassung

In diesem Artikel haben wir erklärt, wie Nginx installiert und konfiguriert wird. Hier erfahren Sie, wie Sie ein namenbasiertes virtuelles Hosting mit SSL einrichten, um die Datenübertragung zwischen dem Webserver und einem Client zu sichern.

Wenn Sie während Ihres Nginx-Installations- / Konfigurationsprozesses Rückschläge erlebt haben oder Fragen oder Kommentare haben, verwenden Sie das unten stehende Feedback-Formular, um uns zu erreichen.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *