So richten Sie namensbasierte und IP-basierte virtuelle Hosts (Serverblöcke) mit NGINX ein
In einer relativ kurzen Zeitspanne seit seiner Entwicklung und Bereitstellung (etwas mehr als 10 Jahre) hat Nginx aufgrund seiner hohen Leistung und geringen Speichernutzung ein nachhaltiges und stetiges Wachstum unter den Webservern erlebt.
Da Nginx eine freie und quelloffene Software ist, wurde sie von Tausenden von Webserver-Administratoren auf der ganzen Welt übernommen, nicht nur in Linux- und *nix-Servern, sondern auch in Microsoft Windows.
Nicht verpassen: Apache Namensbasiertes und IP-basiertes virtuelles Hosting
Für diejenigen unter uns, die am meisten an Apache gewöhnt sind, mag Nginx eine etwas steile Lernkurve haben (zumindest war das bei mir der Fall), aber es zahlt sich auf jeden Fall aus, sobald Sie ein paar Websites einrichten und anfangen, die Statistiken zum Datenverkehr und zur Ressourcennutzung zu sehen.
In diesem Artikel erklären wir, wie Sie mit Nginx namensbasiertes und IP-basiertes virtuelles Hosting in CentOS/RHEL 7-Servern und Debian 8 und Derivaten einrichten können, beginnend mit Ubuntu 15.04 und seinen Spin-offs.
Unser Testszenario für diesen Artikel sieht wie folgt aus:
- Betriebssystem: Debian 8 Jessie Server [IP 192.168.0.25]
- Gateway: Router [IP 192.168.0.1]
- Webserver: Nginx 1.6.2-5
- Dummy-Domänen: www.tecmintlovesnginx.com und www.nginxmeanspower.com.
Installieren des Nginx-Webservers
Wenn Sie dies noch nicht getan haben, installieren Sie bitte Nginx, bevor Sie fortfahren. Wenn Sie Hilfe beim Einstieg benötigen, wird eine schnelle Suche nach nginx auf dieser Website mehrere Artikel zu diesem Thema zurückgeben. Klicken Sie auf das Lupensymbol oben auf dieser Seite und suchen Sie nach dem Stichwort nginx. Wenn Sie nicht wissen, wie Sie auf dieser Website nach Artikeln suchen sollen, machen Sie sich keine Sorgen, hier haben wir Links zu den nginx-Artikeln hinzugefügt, gehen Sie einfach durch und installieren Sie sie gemäß Ihren jeweiligen Linux-Distributionen.
- Installieren und Kompilieren von Nginx aus Quellen in RHEL/CentOS 7
- Installieren Sie den Nginx-Webserver unter Debian 8
- Installieren Sie Nginx mit MariaDB und PHP/PHP-FPM auf Fedora 23
- Installieren Sie den Nginx-Webserver auf Ubuntu 15.10 Server/Desktop
- Passwortschutz für Nginx-Website-Verzeichnisse
Machen Sie sich dann bereit, mit dem Rest dieses Tutorials fortzufahren.
Erstellen von namensbasierten virtuellen Hosts in Nginx
Wie Sie sicher bereits wissen, ist ein virtueller Host eine Website, die von Nginx in einem einzigen Cloud-VPS oder physischen Server bereitgestellt wird. In der Nginx-Dokumentation finden Sie jedoch stattdessen den Begriff "Serverblöcke", aber sie sind im Grunde dasselbe, das mit unterschiedlichen Namen bezeichnet wird.
Der erste Schritt zum Einrichten virtueller Hosts besteht darin, einen oder mehrere Serverblöcke (in unserem Fall erstellen wir zwei, einen für jede Dummy-Domäne) in der Hauptkonfigurationsdatei (/etc/nginx/nginx.conf) oder in /etc/nginx/sites-available zu erstellen.
Obwohl der Name der Konfigurationsdateien in diesem Verzeichnis (sites-available) beliebig festgelegt werden kann, ist es eine gute Idee, den Namen der Domains zu verwenden, und zusätzlich haben wir uns entschieden, die Erweiterung .conf hinzuzufügen, um anzuzeigen, dass es sich um Konfigurationsdateien handelt.
Diese Serverblöcke können relativ komplex sein, bestehen aber in ihrer Grundform aus folgendem Inhalt:
In /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
server {
listen 80;
server_name tecmintlovesnginx.com www.tecmintlovesnginx.com;
access_log /var/www/logs/tecmintlovesnginx.access.log;
error_log /var/www/logs/tecmintlovesnginx.error.log error;
root /var/www/tecmintlovesnginx.com/public_html;
index index.html index.htm;
}
In /etc/nginx/sites-available/nginxmeanspower.com.conf:
server {
listen 80;
server_name nginxmeanspower.com www.nginxmeanspower.com;
access_log /var/www/logs/nginxmeanspower.access.log;
error_log /var/www/logs/nginxmeanspower.error.log error;
root /var/www/nginxmeanspower.com/public_html;
index index.html index.htm;
}
Sie können die obigen Blöcke verwenden, um mit der Einrichtung Ihrer virtuellen Hosts zu beginnen, oder Sie können die Dateien mit dem grundlegenden Gerüst aus /etc/nginx/sites-available/default (Debian) oder /etc/nginx/nginx.conf.default (CentOS) erstellen.
Ändern Sie nach dem Kopieren die Berechtigungen und den Besitz:
# chmod 660 /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chmod 660 /etc/nginx/sites-available/nginxmeanspower.com.conf
Debian und Derivate
# chgrp www-data /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp www-data /etc/nginx/sites-available/nginxmeanspower.com.conf
CentOS und RHEL
# chgrp nginx /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp nginx /etc/nginx/sites-available/nginxmeanspower.com.conf
Wenn Sie fertig sind, sollten Sie die Beispieldatei löschen oder in eine andere Datei umbenennen, um Verwirrung oder Konflikte zu vermeiden.
Bitte beachten Sie, dass Sie auch das Verzeichnis für die Protokolle (/var/www/logs) erstellen und dem Nginx-Benutzer (nginx oder www-data, je nachdem, ob Sie CentOS oder Debian verwenden) Lese- und Schreibrechte darüber erteilen müssen:
# mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs
Die virtuellen Hosts müssen nun aktiviert werden, indem ein symbolischer Link zu dieser Datei im Verzeichnis sites-enabled erstellt wird:
# ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf
Erstellen Sie als Nächstes eine HTML-Beispieldatei mit dem Namen index.html in /var/www/<Domain Name>/public_html für jeden der virtuellen Hosts (ersetzen Sie <Domain Name> nach Bedarf). Ändern Sie den folgenden Code nach Bedarf:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tecmint loves Nginx</title>
</head>
<body>
<h1>Tecmint loves Nginx!</h1>
</body>
</html>
Testen Sie abschließend die Nginx-Konfiguration und starten Sie den Webserver. Wenn es Fehler in der Konfiguration gibt, werden Sie aufgefordert, diese zu korrigieren:
# nginx -t && systemctl start nginx
und fügen Sie die folgenden Einträge zu Ihrer /etc/hosts-Datei auf Ihrem lokalen Rechner hinzu, um eine grundlegende Namensauflösungsstrategie zu verfolgen:
192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com
Starten Sie dann einen Webbrowser und gehen Sie zu den oben aufgeführten URLs:
Um weitere virtuelle Hosts in Nginx hinzuzufügen, wiederholen Sie einfach die oben beschriebenen Schritte so oft wie nötig.
IP-basierte virtuelle Hosts in Nginx
Im Gegensatz zu namensbasierten virtuellen Hosts, bei denen alle Hosts über dieselbe IP-Adresse erreichbar sind, benötigen IP-basierte virtuelle Hosts jeweils eine andere IP:Port-Kombination.
Auf diese Weise kann der Webserver je nach IP-Adresse und Port, an dem die Anfrage empfangen wird, unterschiedliche Websites zurückgeben. Da namentlich basierte virtuelle Hosts uns den Vorteil bieten, eine IP-Adresse und einen Port gemeinsam zu nutzen, sind sie der Standard für Allzweck-Webserver und sollten das Setup der Wahl sein, es sei denn, Ihre installierte Version von Nginx unterstützt Server Name Indication (SNI) nicht, entweder weil es sich um eine WIRKLICH veraltete Version handelt oder weil sie ohne die Kompilierungsoption –with-http_ssl_module kompiliert wurde.
Wenn
# nginx -V
Gibt die unten hervorgehobenen Optionen nicht zurück:
Sie müssen Ihre Version von Nginx aktualisieren oder neu kompilieren, abhängig von Ihrer ursprünglichen Installationsmethode. Um Nginx zu kompilieren, befolgen Sie den folgenden Artikel:
- Installieren und Kompilieren von Nginx aus Quellen in RHEL/CentOS 7
Unter der Annahme, dass es losgehen kann, müssen wir beachten, dass eine weitere Voraussetzung für IP-basierte virtuelle Hosts die Verfügbarkeit separater IPs ist – entweder durch Zuweisung zu unterschiedlichen Netzwerkschnittstellen oder durch die Verwendung virtueller IPs (auch bekannt als IP-Aliasing).
Um IP-Aliasing in Debian durchzuführen (vorausgesetzt, Sie verwenden eth0), bearbeiten Sie /etc/network/interfaces wie folgt:
Debian und Derivate
auto eth0:1
iface eth0:1 inet static
address 192.168.0.25
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
address 192.168.0.26
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
Im obigen Beispiel erstellen wir zwei virtuelle Netzwerkkarten aus eth0: eth0:1 (192.168.0.25) und eth0:2 (192.168.0.26).
CentOS und RHEL
Benennen Sie in CentOS /etc/sysconfig/network-scripts/ifcfg-enp0s3 in ifcfg-enp0s3:1 um und erstellen Sie eine Kopie als ifcfg-enp0s3:2, und ändern Sie dann einfach die folgenden Zeilen:
DEVICE="enp0s3:1"
IPADDR=192.168.0.25
und
DEVICE="enp0s3:2"
IPADDR=192.168.0.26
Wenn Sie fertig sind, starten Sie den Netzwerkdienst neu:
# systemctl restart networking
Nehmen Sie als Nächstes die folgenden Änderungen an den Serverblöcken vor, die zuvor in diesem Artikel definiert wurden:
In /etc/nginx/sites-available/tecmintlovesnginx.com.conf:
listen 192.168.0.25:80
In /etc/nginx/sites-available/nginxmeanspower.com.conf:
listen 192.168.0.26:80
Starten Sie abschließend Nginx neu, damit die Änderungen wirksam werden.
# systemctl restart nginx
Und vergessen Sie nicht, Ihre lokale /etc/hosts entsprechend zu aktualisieren:
192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com
Daher gibt jede Anforderung, die an 192.168.0.25 und 192.168.0.26 an Port 80 gesendet wird, tecmintlovesnginx.com bzw. nginxmeanspower.com zurück:
Wie Sie in den obigen Bildern sehen können, verfügen Sie jetzt über zwei IP-basierte virtuelle Hosts, die die einzige Netzwerkkarte auf Ihrem Server mit zwei verschiedenen IP-Aliasen verwenden.
Zusammenfassung
In diesem Tutorial haben wir erklärt, wie Sie sowohl namensbasierte als auch IP-basierte virtuelle Hosts in Nginx einrichten können. Obwohl Sie wahrscheinlich die erste Option verwenden möchten, ist es wichtig zu wissen, dass die andere Option immer noch vorhanden ist, wenn Sie sie benötigen – stellen Sie einfach sicher, dass Sie diese Entscheidung treffen, nachdem Sie die in diesem Leitfaden beschriebenen Fakten berücksichtigt haben.
Darüber hinaus können Sie die Nginx-Dokumente mit einem Lesezeichen versehen, da es sich lohnt und gut ist, sich beim Erstellen von Serverblöcken (da haben Sie – wir sprechen jetzt in der Nginx-Sprache) und deren Konfiguration häufig auf sie zu beziehen. Sie werden nicht glauben, welche Optionen zur Verfügung stehen, um diesen hervorragenden Webserver zu konfigurieren und zu optimieren.
Wie immer zögern Sie nicht, uns über das untenstehende Formular eine Nachricht zu schreiben, wenn Sie Fragen oder Kommentare zu diesem Artikel haben. Wir freuen uns darauf, von Ihnen zu hören, und Ihr Feedback zu diesem Leitfaden ist sehr willkommen.




