In Nginx Server blockiert werden verwendet, um bestimmte Domäneninformationen zu definieren. Es hilft, mehrere Domains oder Websites zu hosten. Jeder Block enthält spezifische Domäneninformationen wie Dokumentenstamm, SSL, Port und mehr. Nginx-Serverblöcke ähneln virtuellen Apache-Hosts.
In diesem Tutorial lernen wir, wie man Nginx-Serverblöcke konfiguriert auf Ubuntu 18.04/20.04 .
Voraussetzungen
Erfordert eine Ubuntu 18.04/20.04-Instanz. Auf der Instanz sollte Nginx installiert sein. Benötigen Sie einen Benutzer mit sudo-Zugriff.
Schritt 1. Erstellen Sie die Verzeichnisstruktur
Das Dokumentenstammverzeichnis ist das Verzeichnis, in dem die Website-Dateien für einen Domänennamen gespeichert und als Antwort auf Anfragen bereitgestellt werden. Wir können den Dokumentenstamm an einen beliebigen Ort setzen, aber in diesem Artikel verwenden wir die folgende Verzeichnisstruktur:
/var/www/
├── domain1.com
│ └── images
│ └── index.html
│ └── style.css
├── domain2.net
│ └── images
│ └── index.html
│ └── style.css
Grundsätzlich erstellen wir für jede Domain, die wir auf unserem Server hosten möchten, ein separates Verzeichnis im Verzeichnis /var/www
Verzeichnis.
Lassen Sie uns das Root-Verzeichnis für unsere Domains erstellen:
$ sudo mkdir -p /var/www/domain1.com
Zu Testzwecken erstellen wir ein index.html-, style.css-Dateien- und Bildverzeichnis innerhalb des Dokumentenstammverzeichnisses der Domain.
$ cd /var/www/domain1.com/
/var/www/domain1.com$ sudo mkdir images index.html style.css
Öffnen Sie unseren Editor und erstellen Sie die Demodatei:
/var/www/domain1.com/index.html<!DOCTYPE html> <html lang="en" dir="ltr">
<head> <meta charset="utf-8">
<title>Welcome to domain1.com</title> <link rel="stylesheet" href="style.css"/>
</head>
<body> <h1 style="color:green;text-align:center;">Success! domain1.com home page!</h1>
</body>
</html>
Hier führen wir die Befehle als sudo
aus Benutzer und die neu erstellten Dateien und Verzeichnisse gehören dem root
Benutzer.
Um Berechtigungsprobleme zu vermeiden, können wir den Besitz des Stammverzeichnisses der Domänendokumente auf den Nginx-Benutzer (www-data)
ändern :
$ sudo chown -R www-data: /var/www/domain1.com
Wir werden die gleichen Verfahren mit domain2.net
durchführen
Schritt 2. Nginx-Server-Blockdateien für jede Domain erstellen
Jetzt, da wir den Inhalt haben, den wir bereitstellen möchten, müssen wir tatsächlich die Serverblöcke erstellen, die Nginx mitteilen, wie dies zu tun ist.
Standardmäßig enthält Nginx einen Serverblock namens dfault
die wir als Vorlage für unsere eigenen Konfigurationen verwenden können. Wir beginnen mit dem Design des Serverblocks unserer ersten Domain, den wir dann für unsere zweite Domain kopieren und die notwendigen Änderungen vornehmen werden.
1) Erstellen Sie die erste Nginx-Serverblockdatei
Wie oben erwähnt, erstellen wir unsere erste Serverblock-Konfigurationsdatei, indem wir die Standarddatei kopieren:
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain1.com
Öffnen Sie nun die neu erstellte Datei in Ihrem Texteditor mit sudo-Berechtigungen:
$ sudo nano /etc/nginx/sites-available/domain1.com
Nach dem Bearbeiten der Datei sieht sie etwa so aus:
/etc/nginx/sites-available/domain1.comserver { listen 80; listen [::]:80; root /var/www/domain1.com; index index.html index.htm index.nginx-debian.html; server_name domain1.com www.domain1.com;
location /
{ try_files $uri $uri/ =404; } }
Das ist alles, was wir für eine Grundkonfiguration benötigen. Speichern und schließen Sie die Datei, um Ctrl
zu beenden + x
.
2) Erstellen Sie die zweite Nginx-Serverblockdatei
Nachdem wir nun unsere erste Nginx-Serverblockkonfiguration haben, können wir diese als Grundlage für unsere zweite Datei verwenden. Kopieren Sie es, um eine neue Datei zu erstellen:
$ sudo cp /etc/nginx/sites-available/domain1.com /etc/nginx/sites-available/domain2.net
Öffnen Sie die neue Datei mit sudo
Privilegien in Ihrem Editor:
$ sudo nano /etc/nginx/sites-available/domain2.net
Passen Sie die Root-Direktive so an, dass sie auf das Dokument root
unserer zweiten Domain verweist und passen Sie den server_name
an um mit dem Domain-Namen Ihrer zweiten Website übereinzustimmen (achten Sie darauf, alle Aliasnamen anzugeben).
Wenn Sie fertig sind, sieht unsere Datei wahrscheinlich so aus:
/etc/nginx/sites-available/domain2.netserver { listen 80; listen [::]:80; root /var/www/domain2.net; index index.html index.htm index.nginx-debian.html; server_name domain2.net www.domain2.net;
location /
{ try_files $uri $uri/ =404; } }
Speichern und schließen Sie die Datei, um Ctrl
zu beenden + x
.
Schritt 3. Aktivieren Sie unsere Nginx-Serverblöcke und starten Sie Nginx neu
Jetzt, da wir unsere Serverblockdateien haben, müssen wir sie aktivieren. Wir können dies tun, indem wir symbolische Links von diesen Dateien zu sites-enabled
erstellen Verzeichnis, aus dem Nginx beim Start liest.
Wir können diese Links erstellen, indem wir Folgendes eingeben:
$ sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/domain2.net /etc/nginx/sites-enabled/
Diese Dateien befinden sich jetzt im aktivierten Verzeichnis. Wir haben jetzt drei Serverblöcke aktiviert:
1. domain1.com:Antwortet auf Anfragen für domain1.com und www.domain1.com
2. domain2.net:Antwortet auf Anfragen für domain2.net und www.domain2.net
3. Standard:Reagiert auf alle Anfragen auf Port 80, die nicht mit den anderen beiden Blöcken übereinstimmen.
Um ein mögliches Hash-Bucket-Speicherproblem zu vermeiden, das durch das Hinzufügen zusätzlicher Servernamen entstehen kann, werden wir einen einzelnen Wert in unserer /etc/nginx/nginx.conf-Datei anpassen. Öffnen Sie die Datei jetzt:
$ sudo nano /etc/nginx/nginx.conf
Suchen Sie in der Datei server_names_hash_bucket_size
Richtlinie. Entfernen Sie das #
Symbol zum Auskommentieren der Zeile:
http { . . . server_names_hash_bucket_size 64; . . . }
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Testen Sie als Nächstes, um sicherzustellen, dass keine unserer Nginx-Dateien Syntaxfehler enthält:
$ sudo nginx -t
Wenn keine Probleme gefunden wurden, starten Sie Nginx neu, um unsere Änderungen zu aktivieren:
$ sudo systemctl restart nginx
Nginx sollte jetzt beide unserer Domainnamen bedienen.
Schritt 4. Verifizierung durch Zugriff auf die Website
Jetzt, da wir alle eingerichtet sind, sollten wir testen, ob unsere Serverblöcke korrekt funktionieren. Wir können dies tun, indem wir die Domains in unserem Webbrowser besuchen:
http://domain1.com
Sie sollten eine Seite sehen, die so aussieht:
Wenn Sie Ihren zweiten Domainnamen besuchen, sollten Sie eine etwas andere Seite sehen:
http://domain2.net
Schlussfolgerung
In diesem Tutorial haben wir gelernt, wie man den Nginx-Serverblock unter Ubuntu 18.04/20.04 konfiguriert. Mithilfe von Nginx-Serverblöcken haben wir zwei Domains eingerichtet, um Webanfragen zu bedienen.