Website-Suche

So richten Sie namensbasierte und IP-basierte virtuelle Hosts (Serverblöcke) mit NGINX ein


In relativ kurzer Zeit seit seiner Entwicklung und Bereitstellung (etwas mehr als 10 Jahre) verzeichnete Nginx aufgrund seiner hohen Leistung und geringen Speichernutzung ein anhaltendes und stetiges Wachstum unter den Webservern.

Da es sich bei Nginx um freie und Open-Source-Software handelt, wurde es von Tausenden von Webserveradministratoren auf der ganzen Welt übernommen, nicht nur auf Linux- und *nix-Servern, sondern auch in Microsoft Windows.

Nicht verpassen: Apache Namens- und IP-basiertes virtuelles Hosting

Für diejenigen von 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, wenn man erst einmal ein paar davon eingerichtet hat von Websites und sehen Sie sich die Verkehrs- und Ressourcennutzungsstatistiken an.

In diesem Artikel erklären wir, wie Sie mit Nginx namenbasiertes und IP-basiertes virtuelles Hosting in CentOS/RHEL einrichten 7-Server und Debian 8 und Derivate, beginnend mit Ubuntu 15.04 und seinen Ablegern.

Unser Testszenario für diesen Artikel sieht wie folgt aus:

  1. Betriebssystem: Debian 8 Jessie-Server [IP 192.168.0.25]
  2. Gateway: Router [IP 192.168.0.1]
  3. Webserver: Nginx 1.6.2-5
  4. Dummy-Domains: www.tecmintlovesnginx.com und www.nginxmeanspower.com.

Nginx-Webserver installieren

Falls Sie dies noch nicht getan haben, installieren Sie bitte Nginx, bevor Sie fortfahren. Wenn Sie Hilfe beim Einstieg benötigen, finden Sie bei einer schnellen Suche nach „nginx“ auf dieser Website mehrere Artikel zu diesem Thema. Klicken Sie oben auf dieser Seite auf das Lupensymbol und suchen Sie nach dem Schlüsselwort Nginx. Wenn Sie nicht wissen, wie Sie auf dieser Website nach Artikeln suchen, machen Sie sich keine Sorgen. Wir haben hier Links zu den Nginx-Artikeln hinzugefügt. Gehen Sie sie einfach durch und installieren Sie sie gemäß Ihren jeweiligen Linux-Distributionen.

  1. Installieren und kompilieren Sie Nginx aus Quellen in RHEL/CentOS 7
  2. Installieren Sie den Nginx-Webserver unter Debian 8
  3. Installieren Sie Nginx mit MariaDB und PHP/PHP-FPM auf Fedora 23
  4. Installieren Sie den Nginx-Webserver auf dem Ubuntu 15.10-Server/Desktop
  5. Schützen Sie Nginx-Website-Verzeichnisse mit einem Passwort

Machen Sie sich dann bereit, mit dem Rest dieses Tutorials fortzufahren.

Erstellen namensbasierter virtueller Hosts in Nginx

Wie Sie sicher bereits wissen, ist ein virtueller Host eine Website, die von Nginx auf einem einzelnen Cloud-VPS oder physischen Server bereitgestellt wird. In den Nginx-Dokumenten finden Sie jedoch stattdessen den Begriff „Serverblöcke“, aber im Grunde handelt es sich dabei um dasselbe und mit unterschiedlichen Namen.

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 ) zu erstellen. ) oder innerhalb von /etc/nginx/sites-available.

Obwohl der Name der Konfigurationsdateien in diesem Verzeichnis (sites-available) beliebig festgelegt werden kann, ist es eine gute Idee, den Namen der Domänen zu verwenden, und zusätzlich haben wir uns entschieden, den hinzuzufügen .conf-Erweiterung, um anzugeben, dass es sich um Konfigurationsdateien handelt.

Diese Serverblöcke können relativ komplex sein, bestehen in ihrer Grundform jedoch aus folgenden Inhalten:

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 oben genannten Blöcke verwenden, um mit der Einrichtung Ihrer virtuellen Hosts zu beginnen, oder Sie können die Dateien mit dem Grundgerüst aus /etc/nginx/sites-available/default (Debian) erstellen >) oder /etc/nginx/nginx.conf.default (CentOS).

Ändern Sie nach dem Kopieren deren Berechtigungen und Eigentümer:

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 einen anderen Namen umbenennen, um Verwirrung oder Konflikte zu vermeiden.

Bitte beachten Sie, dass Sie auch das Verzeichnis für die Protokolle erstellen müssen (/var/www/logs) und den Nginx-Benutzer angeben müssen (nginx oder www-data , je nachdem, ob Sie CentOS oder Debian verwenden) Lese- und Schreibberechtigungen darüber:

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 Symlink 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 Beispiel-HTML-Datei mit dem Namen index.html innerhalb von /var/www//public_html für jeden der virtuellen Hosts (ersetzen Sie nach Bedarf eingeben). Ä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. Sollten in der Konfiguration Fehler auftreten, werden Sie aufgefordert, diese zu korrigieren:

nginx -t && systemctl start nginx

und fügen Sie als grundlegende Strategie zur Namensauflösung die folgenden Einträge zu Ihrer Datei /etc/hosts auf Ihrem lokalen Computer hinzu:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Starten Sie dann einen Webbrowser und rufen Sie die oben aufgeführten URLs auf:

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 einen anderen IP:Port Kombination jeweils.

Dadurch kann der Webserver abhängig von der IP-Adresse und dem Port, an dem die Anfrage empfangen wird, unterschiedliche Websites zurückgeben. Da namensbasierte 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 nicht (SNI), entweder weil es eine WIRKLICH veraltete Version ist oder weil es ohne die Kompilierungsoption –with-http_ssl_module kompiliert wurde.

Wenn,

nginx -V

gibt die unten hervorgehobenen Optionen nicht zurück:

Abhängig von Ihrer ursprünglichen Installationsmethode müssen Sie Ihre Nginx-Version aktualisieren oder neu kompilieren. Befolgen Sie zum Kompilieren von Nginx den folgenden Artikel:

  1. Installieren und kompilieren Sie Nginx aus Quellen in RHEL/CentOS 7

Vorausgesetzt, wir können loslegen, 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 NICs 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 zuvor in diesem Artikel definierten Serverblöcken vor:

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 Datei /etc/hosts entsprechend zu aktualisieren:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Daher wird jede an 192.168.0.25 und 192.168.0.26 auf Port 80 gestellte Anfrage tecmintlovesnginx.com zurückgeben und nginxmeanspower.com bzw.:

Wie Sie in den Bildern oben sehen können, verfügen Sie jetzt über zwei IP-basierte virtuelle Hosts, die die einzige Netzwerkkarte in Ihrem Server mit zwei unterschiedlichen IP-Aliasnamen verwenden.

Zusammenfassung

In diesem Tutorial haben wir erklärt, wie man sowohl namensbasierte als auch IP-basierte virtuelle Hosts in Nginx einrichtet. Obwohl Sie wahrscheinlich die erste Option nutzen möchten, ist es wichtig zu wissen, dass die andere Option immer noch verfügbar ist, wenn Sie sie benötigen – stellen Sie einfach sicher, dass Sie diese Entscheidung treffen, nachdem Sie die in diesem Leitfaden dargelegten Fakten berücksichtigt haben.

Darüber hinaus möchten Sie möglicherweise die Nginx-Dokumente mit einem Lesezeichen versehen, da es sinnvoll und sinnvoll ist, beim Erstellen von Serverblöcken (da haben Sie es – wir sprechen jetzt in der Nginx-Sprache) und beim Konfigurieren häufig auf sie zurückzugreifen. Sie werden nicht glauben, welche Möglichkeiten zur Konfiguration und Optimierung dieses hervorragenden Webservers zur Verfügung stehen.

Wenn Sie Fragen oder Kommentare zu diesem Artikel haben, können Sie uns wie immer gerne über das untenstehende Formular kontaktieren. Wir freuen uns darauf, von Ihnen zu hören und freuen uns über Ihr Feedback zu diesem Leitfaden.