GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie einen virtuellen Nginx-Host (Serverblock)

Serverblöcke, die in Nginx oft als virtuelle Hosts bezeichnet werden, ermöglichen es Ihnen, mehrere Websites auf einem Server zu hosten. So verwenden Sie sie.

Inhaltsverzeichnis

  • Was ist ein virtueller Host?
  • Wie funktioniert der virtuelle Host?
  • So erstellen Sie virtuelle Nginx-Hosts (Serverblöcke)
    • 1. Erstellen der Verzeichnisstruktur
    • 2. Erstellen von Testseiten für jede Website
    • 3. Erstellen Sie einen virtuellen Nginx-Host (Serverblöcke)
    • 4. Virtuelle Nginx-Hosts (Serverblöcke) aktivieren
    • 5. Testen der virtuellen Hosts (optional)
    • 6. Virtuelle Nginx-Hosts (Serverblöcke) deaktivieren
  • Schlussfolgerung

Nginx wurde entwickelt, um mehrere Domänen auf einem einzigen Server und einer IP-Adresse zu verwalten. Mit anderen Worten, wenn Sie einen einzelnen Server haben, der als Webserver verwendet wird und dem nur eine IP-Adresse zugewiesen wurde, dann verwenden Sie virtuelle Nginx-Hosts, um mehr als eine Website oder Domain auf dem Server auszuführen.

Bevor Sie mit dieser Anleitung beginnen, müssen Sie Nginx installieren. Um zu erfahren, wie man es installiert, lesen Sie unsere hervorragende Anleitung zur Installation von Nginx Web Server unter Linux.

Was ist ein virtueller Host?

Wenn Sie sich nicht sicher sind, was ein virtueller Host ist, lassen Sie es mich erklären. Es ist ein Apache-HTTP-Server-Begriff; Es wird jedoch auch häufig von Nginx-Benutzern verwendet. Der richtige Begriff für Nginx ist Serverblock .

Ein virtueller Host ist eine Methode zum Hosten mehrerer Domänennamen auf einem einzigen Server.

Wie funktioniert der virtuelle Host?

Wenn Sie Webserver-Software wie Nginx auf einem Server starten, bindet sich dieser Webserver an einen oder mehrere Netzwerkports. Normalerweise sind das für einen Webserver die Ports 80 und 443.

Wenn ein Computer eine Website besucht, sendet er eine Anfrage über das Internet an den Server, und der Server empfängt diese Anfrage. Als erstes schaut sich der Server also den Port an, über den die Anfrage an den Zielport gesendet wurde.

Als nächstes wird dieser Zielport verwendet, um zu bestimmen, welche Anwendung diese Informationen weiterleiten soll. Das bedeutet, dass Ihr Webserver nur eine Anwendung haben kann, die die Anfragen empfängt.

Aber was ist, wenn Sie zwei verschiedene Websites auf demselben Webserver hosten möchten? Der Server muss mitteilen, wann ein Paket eintrifft, das die Website anfordert. Dann muss es wissen, welche Website angefordert wird, um zu wissen, welche Informationen zurückgesendet werden sollen.

Unabhängig davon, welche Website angefordert wird, kann der Server nicht anhand der Portnummer allein des Zielports feststellen, auf welche Website ein Client zuzugreifen versucht. Alles, was der Server tun wird, ist zu sagen:„Ich sende diese Anfrage an Nginx.“ Von dort muss Nginx entscheiden, was zurückgesendet wird.

Nginx hat ein Konzept namens Serverblöcke . Die Serverblöcke können für zwei verschiedene Dinge verwendet werden.

Sie können verwendet werden, um andere Websites basierend auf der angeforderten IP-Adresse bereitzustellen, oder sie können verwendet werden, um verschiedene Websites basierend auf dem verwendeten Domainnamen bereitzustellen .

Wenn Sie also den Namen der Website wie www.example.com eingeben und der Server diesen erhält, kann Nginx in den HTTP-Headern nachsehen, welcher Servername angefordert wurde, und von dort aus basierend auf seinen konfigurierten virtuellen Hosts etwas tun eine Entscheidung, in welchem ​​Verzeichnis die Website-Dateien gespeichert werden, und die korrekte Antwort auf der Grundlage des Servernamens an den Client zurückzugeben.

So erstellen Sie virtuelle Nginx-Hosts (Serverblöcke)

Es gibt zwei Verzeichnisse, in denen wir unsere Konfigurationsdateien für virtuelle Hosts erstellen und speichern können. Beide befinden sich in /etc/nginx Verzeichnis. Die Namen dieser beiden Verzeichnisse sind sites-available und sites-enabled .

  • /etc/nginx/sites-available :Das Verzeichnis, in dem einzelne virtuelle Hosts (Websites) definiert sind. Denken Sie daran, dass Nginx die in diesem Verzeichnis gefundenen Konfigurationsdateien nicht verwendet, es sei denn, sie sind verknüpft zu /etc/nginx/sites-enabled Verzeichnis.
  • /etc/nginx/sites-enabled :Liste der virtuellen Hosts (Websites), die aktiv von Nginx bedient werden.

Fragen Sie sich wahrscheinlich, warum wir zwei Verzeichnisse zum Speichern unserer virtuellen Hostdateien benötigen? Der Hauptvorteil davon ist, dass wir viele virtuelle Hostdateien auf unserem Nginx-Server erstellen können, aber wir können sie gemäß unseren Anforderungen aktivieren.

Wir werden virtuelle Hostdateien erstellen, um mehrere Sites mit mehreren Domains auf unserem Nginx-Server zu hosten. Die Domainnamen sind website1.com und website2.com .

1. Erstellen der Verzeichnisstruktur

Als erstes müssen wir für jeden virtuellen Host ein Verzeichnis erstellen, um die verschiedenen Website-Inhalte zu speichern. Wir werden die Verzeichnisse in /var/www platzieren , und wir werden sie nach jedem Domainnamen benennen.

Führen Sie die folgenden Befehle aus, um die Verzeichnisse zu erstellen:

sudo mkdir -p /var/www/website1.com
sudo mkdir -p /var/www/website2.com

Das -p Flag im obigen Befehl sagt mkdir um alle erforderlichen übergeordneten Verzeichnisse zu erstellen.

2. Erstellen von Testseiten für jede Website

Als Nächstes erstellen wir zu Demonstrationszwecken eine index.html Datei im Dokumentstammverzeichnis der Domain, damit wir etwas anzeigen können.

sudo vim /var/www/website1.com/index.html

Fügen Sie die folgenden Zeilen ein:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 1!</title>
    </head>
    <body>
        <h1>Welcome to Website 1!</h1>
    </body>
</html>

Wiederholen Sie nun den obigen Schritt für website2.com.

sudo vim /var/www/website2.com/index.html

Fügen Sie die folgenden Zeilen ein:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 2!</title>
    </head>
    <body>
        <h1>Welcome to Website 2!</h1>
    </body>
</html>

3. Erstellen Sie einen virtuellen Nginx-Host (Serverblöcke)

So erstellen Sie eine virtuelle Nginx-Hostdatei in sites-available Verzeichnis, führen Sie den folgenden Befehl aus:

sudo vim /etc/nginx/sites-available/website1.com

Es ist wichtig zu beachten, dass die Konfigurationsdatei des virtuellen Nginx-Hosts beliebig benannt werden kann, aber normalerweise ist es eine gute Praxis, den Domänennamen zu verwenden.

Fügen Sie nun den folgenden Inhalt in Ihre virtuelle Hostdatei ein:

server {
    listen 80;
    server_name website1.com www.website1.com;
    root /var/www/website1.com;

    access_log /var/log/nginx/website1-access.log;
    error_log /var/log/nginx/website1-error.log;
}

Um die Dinge transparenter zu machen, lassen Sie uns diese Syntax aufschlüsseln. Zuerst ist hier, was jeder Parameter bedeutet:

  • listen :Geben Sie an, auf welchem ​​Port der Nginx-Server auf Verbindungen lauschen soll.
  • server_name :Hier gleichen wir Anfragen für unsere Domain ab. Die Richtlinie enthält eine Liste von Domainnamen, die wir für den Zugriff auf unsere Website verwenden möchten.
  • root : Der Speicherort des Verzeichnisses, in dem wir unsere Website-Dateien gespeichert haben.
  • error_log :Vollständiger Pfad zur Protokolldatei, in der wir alle Fehlerprotokolle dieses virtuellen Hosts speichern.
  • access_log :Vollständiger Pfad zur Protokolldatei, in der wir alle Zugriffsprotokolle dieses virtuellen Hosts speichern.

Jetzt können wir unsere anfängliche Konfiguration des virtuellen Hosts als Grundlage für unsere zweite Datei verwenden. Kopieren Sie es einfach, um eine neue Datei zu erstellen:

sudo cp /etc/nginx/sites-available/website1.com /etc/nginx/sites-available/website2.com

Öffnen Sie die neue Datei und passen Sie sie an unsere zweite an (website2.com ) Domänenname:

sudo vim /etc/nginx/sites-available/website2.com
server {
    listen 80;
    server_name website2.com www.website2.com;
    root /var/www/website2.com;

    access_log /var/log/nginx/website2-access.log;
    error_log /var/log/nginx/website2-error.log;
}

4. Aktivieren Sie virtuelle Nginx-Hosts (Serverblöcke)

Das Letzte, was wir vor dem Testen tun müssen, aktiviert die virtuellen Hosts. Dazu erstellen wir einen symbolischen Link von der Datei zu sites-enabled Verzeichnis:

sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/

Wie Sie dem Bild unten entnehmen können, sind diese Dateien jetzt mit sites-enabled verknüpft Verzeichnis.

Bevor wir fortfahren, überprüfen wir noch einmal, ob es keine Tippfehler gibt. Testen Sie die Nginx-Konfiguration auf korrekte Syntax:

sudo nginx -t

Und schließlich, wenn keine Probleme gefunden wurden, starten Sie den Nginx-Dienst neu, um die Änderungen zu übernehmen:

sudo systemctl restart nginx

5. Testen der virtuellen Hosts (optional)

Um die virtuellen Nginx-Hosts zu testen, müssen wir zuerst unsere Domänennameneinträge auf die IP-Adresse des Servers verweisen. In unserem Fall lautet die Server-IP-Adresse 192.168.122.101 .

Unter Linux öffnen Sie /etc/hosts Datei auf Ihrem Desktop-PC (demjenigen, von dem aus Sie den Test durchführen) mit dem folgenden Befehl:

sudo vim /etc/hosts

Fügen Sie die virtuellen Domänennamen nacheinander hinzu, wie unten gezeigt.

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Auf diese Weise können wir Domains testen, die uns nicht gehören.

Öffnen Sie nun Ihren Browser und geben Sie www.website1.com ein und www.website2.com Einer nach dem anderen. Sie sehen jeweils die Indexseiten beider Domains.

Sie haben erfolgreich zwei unabhängige Domains mit Nginx konfiguriert.

6. Virtuelle Nginx-Hosts (Serverblöcke) deaktivieren

Um einen virtuellen Host in Nginx zu deaktivieren, müssen wir den Symlink entfernen, den wir beim Aktivieren der virtuellen Hostdatei erstellt haben. Zum Beispiel, um website2.com zu deaktivieren , müssen wir den folgenden Befehl ausführen:

sudo rm -rf /etc/nginx/sites-enabled/website2.com

Um die Änderungen zu übernehmen, müssen wir den Nginx-Server neu starten:

sudo systemctl restart nginx

Schlussfolgerung

Dieser Artikel zeigt Ihnen, wie Sie virtuelle Nginx-Hosts (Serverblöcke) erstellen und mehrere Domänen auf einem einzigen Linux-Server hosten. Um einen virtuellen Host für eine andere Domain zu erstellen, wiederholen Sie dieselben Schritte. Aber natürlich kann Nginx noch viel mehr.

Wenn Sie außerdem wissen möchten, wie Sie Ihre Website mit einem kostenlosen SSL-Zertifikat sichern können, empfehle ich Ihnen, unseren Leitfaden Let's Encrypt:Holen Sie sich ein kostenloses SSL-Zertifikat mit Certbot durch.

Weitere Informationen zum Einrichten eines Nginx-Servers finden Sie in der offiziellen Nginx-Dokumentation.

Danke fürs Lesen! Ich hoffe, Sie fanden den Artikel hilfreich und konnten die virtuellen Hosts einrichten. Fühlen Sie sich frei, einen Kommentar zu hinterlassen, wenn Sie Fragen haben.


Linux
  1. So richten Sie den virtuellen Nginx-Host (Serverblöcke) unter CentOS 7 ein

  2. So leiten Sie HTTP zu HTTPS in Nginx um

  3. So erstellen Sie eine Sicherung

  4. Wie erstelle ich einen virtuellen Ausgang in Pulsaudio?

  5. Virtueller Nginx-Host – Nginx-Serverblock

So installieren Sie Nginx in Debian 7

So installieren Sie Nginx auf Fedora 22

So installieren Sie HHVM (HipHop Virtual Machine) unter Ubuntu 20.04 mit Nginx

So installieren Sie NGINX unter Ubuntu 20.04

So installieren Sie Nginx unter CentOS 7

So konfigurieren Sie NGINX auf einem CentOS 7-Server