So installieren Sie NGINX mit virtuellen Hosts und SSL -Zertifikaten

So installieren Sie NGINX mit virtuellen Hosts und SSL -Zertifikaten

Nginx (kurz für Motor-x) ist eine freie, open Source, leistungsstarke, leistungsstarke und skalierbare HTTP- und Reverse-Proxy-Server, ein E-Mail- und Standard-TCP/UDP-Proxy-Server. Es ist einfach zu verwenden und zu konfigurieren mit einer einfachen Konfigurationssprache. NGINX ist jetzt die bevorzugte Webserver -Software für die Leistung stark geladener Websites aufgrund ihrer Skalierbarkeit und Leistung.

In diesem Artikel wird erläutert, wie Nginx als HTTP-Server verwendet wird, ihn so konfigurieren, dass Sie Webinhalte bedienen, namens basierte virtuelle Hosts einrichten und SSL für sichere Datenübertragungen erstellen und installieren, einschließlich eines selbstsignierten Zertifikats auf Ubuntu und CentOS.

So installieren Sie den NGINX -Webserver

Beginnen Sie zunächst mit dem Installieren des Nginx -Pakets aus den offiziellen Repositories mit Ihrem Paketmanager wie gezeigt.

------------ Auf Ubuntu ------------ $ sudo apt update $ sudo apt install nginx ------------ Auf Centos ------------ $ sudo yum update $ sudo yum install epel-release $ sudo yum install nginx 

Nachdem das Nginx-Paket installiert wurde, müssen Sie den Dienst vorerst starten und aktivieren, um den Startzeit automatisch zu starten und den Status zu anzeigen, indem Sie die folgenden Befehle verwenden. Beachten Sie das auf Ubuntu, Es sollte automatisch gestartet und aktiviert werden, während das Paket vorkonfiguriert ist.

$ sudo systemctl start nginx $ sudo systemctl aktivieren nginx $ sudo systemctl Status nginx 
Start und überprüfen Sie den Nginx -Status

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

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

Wenn in Ihrem System eine Firewall aktiviert ist, müssen Sie den Port öffnen 80 Und 443 erlauben Http Und Https Datenverkehr durch ihn durch Laufen.

------------ Auf Centos ------------ $ sudo firewall-cmd --permanent --add-port = 80/tcp $ sudo firewall-cmd --permanent --add-port = 443/tcp $ sudo firewall-cmd--Relad ------------ Auf Ubuntu ------------ $ sudo ufw erlauben 80/tcp $ sudo ufw erlauben 443/tcp $ sudo ufw reload 

Die ideale Methode zum Testen der NGINX -Installation und der Überprüfung, ob sie aus ausgeführt werden und Webseiten bedienen können, besteht darin, einen Webbrowser zu öffnen und auf die IP des Servers zu zeigen.

http: // your-ip-address oder http: // your-domain.com 

Eine funktionierende Installation sollte auf dem folgenden Bildschirm angezeigt werden.

Ü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 bei /etc/nginx/nginx.Conf sowohl in Centos als auch in Ubuntu.

Nginx besteht aus Modulen, die von verschiedenen Konfigurationsoptionen gesteuert werden, die als bekannt als Richtlinien. A Richtlinie kann entweder einfach sein (im Formularnamen und der Werte, die mit a beendet sind ;) oder Block (hat zusätzliche Anweisungen mit der Verwendung von Verwendung ). Und eine Blockrichtlinie, die andere Richtlinien enthält Kontext.

Alle Richtlinien werden in der NGINX -Dokumentation auf der Projektwebsite umfassend erläutert. Weitere Informationen finden Sie darauf.

So servieren Sie statische Inhalte mit Nginx im Standalone -Modus

Auf einer grundlegenden Ebene kann Nginx verwendet werden, um statische Inhalte wie HTML- und Mediendateien im eigenständigen Modus zu bedienen, in dem nur der Standardserverblock verwendet wird (analog zu Apache, bei dem keine virtuellen Hosts konfiguriert wurden).

Wir werden zunächst die Konfigurationsstruktur in der Hauptkonfigurationsdatei kurz erläutern.

 $ sudo vim/etc/nginx/nginx.Conf 

Wenn Sie sich diese NGINX -Konfigurationsdatei ansehen, sollte die Konfigurationsstruktur wie folgt angezeigt werden. Dies wird als Hauptkontext bezeichnet, der viele andere einfache und blockische Anweisungen enthält. Der gesamte Webverkehr wird im HTTP -Kontext behandelt.

Benutzer nginx; Worker_Processes 1;… Fehler_log/var/log/nginx/fehler.log warnen; pid/var/run/nginx.pid;… Ereignisse … http Server … . … 

Das Folgende ist eine Beispiel -Nginx -Hauptkonfiguration (/etc/nginx/nginx.Conf) Datei, wobei der obige HTTP -Block eine Include -Anweisung enthält, in der NGINX mitgeteilt werden soll, wobei Website -Konfigurationsdateien (virtuelle Hostkonfigurationen) ermittelt werden soll.

Nginx -Konfigurationsdatei
Benutzer www-data; Worker_Processes Auto; pid /run /nginx.PID; Ereignisse Worker_Connections 768; # multi_accept on;  http include/etc/nginx/mime.Typen; Default_type Application/Oktettstrom; Inhaftieren/etc/nginx/mime.Typen; Default_type Application/Oktettstrom; access_log/var/log/nginx/greifen zugreifen.Protokoll; Fehler_log/var/log/nginx/fehler.Protokoll; sendFile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; Inhaftieren/etc/nginx/conf.D/*.conf;  

Beachten Sie das auf Ubuntu, Sie finden auch eine zusätzliche Richtlinie (Richtlinie (include/etc/nginx/sites-fähig/*;), wo das Verzeichnis /etc/nginx/sites-fähig/ Speichert Symlinks in den in den Websites -Konfigurationsdateien erstellten Websites -Dateien in /etc/nginx/sites-verfügbare/, um die Websites zu aktivieren. Und Löschen eines Symlink deaktiviert diese bestimmte Site.

Basierend auf Ihrer Installationsquelle finden Sie die Standard -Website -Konfigurationsdatei unter /etc/nginx/conf.D/Standard.Conf (Wenn Sie vom Beamten installiert sind Nginx Repository und Epel) oder /etc/nginx/sites-fähig/standardmäßig (Wenn Sie aus Ubuntu -Repositories installiert haben).

Dies ist unser Beispiel Standard Nginx Server -Block unter /etc/nginx/conf.D/Standard.Conf im Testsystem.

Server Listen 80 default_server; Hören [::]: 80 default_server; Servername _; root/var/www/html/; Indexindex.html; Ort / try_files $ uri $ uri / = 404;  

Eine kurze Erklärung der Anweisungen in der obigen Konfiguration:

  • Hören: Gibt die an Hafen Der Server hört auf.
  • Servername: Definiert den Servernamen, der genaue Namen, Platzhalternamen oder reguläre Ausdrücke sein kann.
  • Wurzel: Gibt das Verzeichnis an, aus dem Nginx Webseiten und andere Dokumente bedient.
  • Index: Gibt die Typ (en) von Indexdateien an, die zugestellt werden sollen.
  • Standort: Wird verwendet, um Anforderungen für bestimmte Dateien und Ordner zu verarbeiten.

Von einem Webbrowser aus, wenn Sie auf den Server mit dem verweisen Hostname Localhost oder seine IP -Adresse verarbeitet die Anfrage und dient der Datei /var/www/html/index.html, und speichert das Ereignis sofort in seinem Zugriffsprotokoll (/var/log/nginx/access.Protokoll) mit einem 200 (OK) Antwort. Bei einem Fehler (fehlgeschlagener Ereignis) wird die Nachricht im Fehlerprotokoll aufgezeichnet (/var/log/nginx/fehler.Protokoll).

Testen Sie Nginx Standard Site

Um mehr über die Anmeldung zu erfahren, Nginx, Sie können sich anhand von benutzerdefinierten Zugriffs- oder Fehlerprotokollformaten in Nginx beziehen.

Anstatt die Standardprotokolldateien zu verwenden, können Sie benutzerdefinierte Protokolldateien für verschiedene Websites definieren, wie wir uns später unter dem Abschnitt „Namensbasierte virtuelle Hosts einrichten“ (Serverblöcke) ansehen 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 eine grundlegende HTTP -Authentifizierung einrichten. Dies kann im Wesentlichen verwendet werden, um den Zugriff auf den gesamten HTTP -Server, einzelne Serverblöcke oder Standortblöcke einzuschränken.

Erstellen Sie zunächst eine Datei, die Ihre Zugriffsanmeldeinformationen speichert (Benutzername Passwort) durch Verwendung der htpasswd Dienstprogramm.

 $ yum install httpd-tools #rhel/centos $ sudo apt install apache2-utils #debian/ubuntu 

Lassen Sie uns beispielsweise Benutzeradministrator zu dieser Liste hinzufügen (Sie können so viele Benutzer wie möglich hinzufügen), wobei die -C Die Option wird verwendet, um die Kennwortdatei und die anzugeben, und die Option -B Um das Passwort zu verschlüsseln. Sobald du geschlagen hast [Eingeben], Sie werden gebeten, das Benutzerkennwort einzugeben:

$ sudo htpasswd -bc/etc/nginx/conf.D/.htpasswd admin 

Lassen Sie uns dann der Kennwortdatei die richtigen Berechtigungen und Eigentümer zuweisen (ersetzen Sie den Benutzer und die Gruppe nginx durch die Gruppe www-data 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 einzige Website (mit dem Serverblock) oder eines bestimmten Verzeichnisses oder einer bestimmten Datei einschränken. Zwei nützliche Anweisungen können verwendet werden, um dies zu erreichen:

  • auth_basic - Schaltet die Validierung des Benutzernamens und des Passworts mit der “einHTTP Basisauthentifizierung" Protokoll.
  • auth_basic_user_file - Gibt die Datei des Anmeldeinformationen an.

Als Beispiel zeigen wir, wie das Verzeichnis Passwort schützt /var/www/html/geschützt.

Server Listen 80 default_server; server_name localhost; root/var/www/html/; Indexindex.html; Ort / try_files $ uri $ uri / = 404;  Ort / Protected / auth_basic "eingeschränkter Zugriff!"; auth_basic_user_file/etc/nginx/conf.D/.htpasswd;  

Speichern Sie nun Änderungen und starten Sie den Nginx -Service neu.

$ sudo systemctl starten nginx neu 

Wenn Sie das nächste Mal Ihren Browser auf das obige Verzeichnis verweisen (http: // localhost/geschützt) Sie werden gebeten, Ihre Anmeldeinformationen (Benutzername) einzugeben Administrator und das gewählte Passwort).

Mit einem erfolgreichen Login können Sie auf den Inhalt des Verzeichnisses zugreifen, andernfalls erhalten Sie ein a “401 Genehmigung erforderlich" Fehler.

So richten Sie in NGINX den Namen Virtual Hosts (Server Blocks) ein

Mit dem Serverkontext können mehrere Domänen/Websites gespeichert und von derselben physischen Maschine oder dem gleichen virtuellen privaten Server (VPS) gespeichert und bedient werden. Mehrere Serverblöcke (die virtuelle Hosts darstellen) können im HTTP -Kontext für jede Site/Domain deklariert werden. Nginx entscheidet, welcher Server eine Anforderung basierend auf dem empfangenen Anforderungsheader verarbeitet.

Wir werden dieses Konzept unter Verwendung der folgenden Dummy -Domänen demonstrieren, die jeweils im angegebenen Verzeichnis liegen:

  • Wearetecmint.com - /var/www/html/weetecmint.com/
  • Welovelinux.com - /var/www/html/Welovelinux.com/

Lassen Sie als Nächstes die entsprechenden Berechtigungen im Verzeichnis für jeden Standort zu.

$ sudo chmod -r 755/var/www/html/weetecmint.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   

Dies ist die Indexseite von www.Wearetecmint.com

Erstellen Sie als Nächst /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 Server -Block -Deklaration in der hinzu Wearetecmint.com.Conf Datei.

Wearetecmint.com.Conf
Server Listen 80; server_name weetecmint.com; root/var/www/html/weetecmint.com/public_html; Indexindex.html; Ort / try_files $ uri $ uri / = 404;  

Fügen Sie als nächstes die folgende Serverblockerdeklaration in die hinzu Welovelinux.com.Conf Datei.

Welovelinux.com.Conf
Server Listen 80; Server_Name Welovelinux.com; root/var/www/html/Welovelinux.com/public_html; Indexindex.html; Ort / try_files $ uri $ uri / = 404;  

Um die jüngsten Änderungen anzuwenden, starten Sie den NGINX -Webserver neu.

$ sudo systemctl starten nginx neu 

Und wenn Sie Ihren Webserver auf die oben genannten Adressen zeigen, sollten Sie die Hauptseiten der Dummy -Domänen sehen.

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

Wichtig: Wenn Sie haben Selinux Aktiviert ermöglicht die Standardkonfiguration nicht, dass Nginx auf Dateien außerhalb bekannter autorisierter Standorte zugreifen kann (z. B /etc/nginx Für Konfigurationen, /var/log/nginx Für Protokolle, /var/www/html für Webdateien usw.).

Sie können dies bewältigen, indem Sie entweder SELinux deaktivieren oder den richtigen Sicherheitskontext festlegen. Weitere Informationen finden Sie in dieser Anleitung: Verwenden Sie Nginx und Nginx Plus mit Selinux auf der Nginx Plus -Website.

So installieren und konfigurieren Sie SSL mit nginx

SSL Zertifikate helfen dabei, sichere HTTP zu aktivieren (Https) auf Ihrer Website, was für die Herstellung einer vertrauenswürdigen/sicher.

Wir decken das Erstellen und Installieren eines selbstsignierten Zertifikats ab und generieren eine Zertifikatsignalanforderung (CSR) Um ein SSL -Zertifikat von einer Zertifikatbehörde zu erwerben ((Ca), um mit Nginx zu verwenden.

Selbstsignierte Zertifikate können kostenlos erstellen und praktisch gut zu Testzwecken und für interne LAN-Dienste zu tun haben. Für öffentlich ausgerichtete Server wird dringend empfohlen, ein Zertifikat zu verwenden, das von einer CA (z.

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 der OpenSSL Befehlszeilenwerkzeug.

$ sudo opensensl req -x509 -nodes -days 365 -Newkey RSA: 2048 -keyout/etc/nginx/ssl -certs/nginx.Schlüssel -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 (nein Des) - bedeutet "Verschlüsseln Sie den Schlüssel nicht".
  • -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 sollte.
  • -keyout/etc/nginx/ssl-certs/nginx.Taste - 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 den Schlüssel für NGINX

Öffnen Sie als Nächst 443. Wir werden mit der virtuellen Hostdatei testen /etc/nginx/conf.D/Wearetecmint.com.Conf.

$ sudo vi/etc/nginx/conf.D/Wearetecmint.com.Conf 

Fügen Sie dann die SSL -Direktive der NGINX -Konfigurationsdatei hinzu, sie sollte ähnlich aussehen wie unten.

Server Listen 80; Hören Sie [::]: 80; Hören Sie 443 SSL; Hören [::]: 443 SSL; SSL auf; 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.Taste; server_name weetecmint.com; root/var/www/html/weetecmint.com/public_html; Indexindex.html; Ort / try_files $ uri $ uri / = 404;  

Starten Sie nun den Nginx neu und weisen Sie Ihren Browser auf die folgende Adresse hin.

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

Wenn Sie ein SSL -Zertifikat bei einer CA kaufen möchten, müssen Sie eine CSR (Certificate Signing Anfrage) wie gezeigt generieren.

$ sudo opensensl req -newKey RSA: 2048 -nodes -keyout/etc/nginx/ssl -certs/Beispiel.com.Schlüssel -out/etc/nginx/ssl -certs/Beispiel.com.CSR 

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

$ sudo opensensl req -key/etc/nginx/ssl -certs/Beispiel.com.Key -New -out/etc/nginx/ssl -certs/Beispiel.com.CSR 

Dann müssen Sie die senden CSR das wird zu a generiert Ca Um die Ausgabe eines CA-unterzeichneten SSL-Zertifikats zu beantragen. Sobald Sie Ihr Zertifikat aus der CA erhalten haben, können Sie es wie oben gezeigt konfigurieren.

Lesen Sie auch: Der ultimative Leitfaden zur Sicherung, Härte und Verbesserung der Leistung des NGINX -Webservers

Zusammenfassung

In diesem Artikel haben wir erklärt, wie nginx installiert und konfiguriert wird. behandelt, wie man das namenbasierte virtuelle Hosting mit SSL einstellt, um Datenübertragungen zwischen dem Webserver und einem Client zu sichern.

Wenn Sie bei Ihrem NGINX -Installations-/Konfigurationsprozess Rückschläge erlebt haben oder Fragen oder Kommentare haben, verwenden Sie das folgende Feedback -Formular, um uns zu erreichen.