Einführung
Nginx ist einer der beliebtesten Webserver der Welt und für das Hosting einiger der meistbesuchten Websites im Internet verantwortlich. In den meisten Fällen ist Nginx leichter und skalierbarer als Apache und kann als Webserver oder als Reverse-Proxy verwendet werden.
Nginx verwendetserver blocks, um Konfigurationen für eine einzelne Site oder Domain zu verwalten. Mit Serverblöcken kann ein Server mehrere Domänen oder Schnittstellen hosten, indem ein entsprechendes System verwendet wird. Dies ist relevant für alle, die mehr als eine Site von einem einzelnen VPS aus hosten möchten.
Jede konfigurierte Domain leitet den Besucher zu einem bestimmten Verzeichnis mit den Informationen dieser Site, ohne dass angegeben wird, dass derselbe Server auch für andere Sites verantwortlich ist. Dieses Schema ist ohne Software-Limit erweiterbar, solange Ihr Server den Datenverkehr verarbeiten kann, den alle Websites anziehen.
In diesem Handbuch wird beschrieben, wie Sie Nginx-Serverblöcke auf einem CentOS 7 VPS einrichten. Während dieses Vorgangs erfahren Sie, wie Sie unterschiedliche Inhalte für unterschiedliche Besucher bereitstellen, je nachdem, welche Domains sie anfordern.
Voraussetzungen
Bevor Sie mit diesem Handbuch beginnen, müssen zunächst einige Schritte ausgeführt werden.
Sie benötigen Zugriff auf einen CentOS 7-Server mit einem Nicht-Root-Benutzer, der über die Berechtigungen vonsudo
verfügt. Wenn Sie dies noch nicht konfiguriert haben, können SieCentOS 7 initial server setup guide durchlaufen, um dieses Konto zu erstellen.
Sie müssen auch Nginx installiert haben, um Serverblöcke dafür konfigurieren zu können. Wenn Sie einen vollständigen LEMP-Stack (Linux, Nginx, MySQL und PHP) auf Ihrem Server haben möchten, können Sie unserer Anleitung zusetting up a LEMP stack in CentOS 7 folgen. Wenn Sie nur Nginx benötigen, können Sie es über dasyum
-Repository von Nginx installieren:
Fügen Sie zunächst das Nginx-Repository zur Liste der Softwarequellen Ihres Servers hinzu.
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Jetzt können Sieyum
verwenden, um Nginx herunterzuladen und zu installieren.
sudo yum install nginx
Melden Sie sich nach Abschluss dieser Schritte über SSH als Benutzer ohne Rootberechtigung an und fahren Sie mit dem Lernprogramm fort.
Note: In der Beispielkonfiguration in diesem Handbuch wird ein Server fürexample.com
und ein anderer fürexample2.com
blockiert. Auf diese wird im gesamten Handbuch verwiesen, Sie sollten jedoch Ihre eigenen Domänen oder Werte ersetzen, während Sie den Anweisungen folgen. Befolgen Siethis link, um zu erfahren, wie Sie Ihre Domain-Namen mit DigitalOcean einrichten.
Wenn Sie keine echten Domains zum Spielen haben, zeigen wir Ihnen am Ende des Tutorials, wie Sie Ihre Serverblockkonfiguration mit Dummy-Werten testen können.
[[Schritt 1 - Erstellen der Verzeichnisstruktur]] == Schritt 1 - Erstellen der Verzeichnisstruktur
Zunächst müssen wir eine Verzeichnisstruktur erstellen, die die Site-Daten enthält, die den Besuchern zur Verfügung stehen.
Unseredocument root (das Verzeichnis der obersten Ebene, in dem Nginx nach Inhalten sucht, die bereitgestellt werden sollen) werden auf einzelne Verzeichnisse im Verzeichnis/var/www
festgelegt. Wir erstellen hier ein Verzeichnis für jeden Serverblock, den wir erstellen möchten.
In jedem dieser Verzeichnisse erstellen wir einhtml
-Verzeichnis, das unsere tatsächlichen Dateien enthält. Dies gibt uns einige Flexibilität in unserem Hosting.
Wir können diese Verzeichnisse mit dem Befehlmkdir
erstellen (mit einem-p
-Flag, mit dem wir einen Ordner mit einem verschachtelten Ordner darin erstellen können):
sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/example2.com/html
Denken Sie daran, dass die Teile inred die Domainnamen darstellen, die wir von unserem VPS aus bereitstellen möchten.
Berechtigungen erteilen
Wir haben jetzt die Verzeichnisstruktur für unsere Dateien, aber sie gehören dem Benutzerroot
. Wenn unser regulärer Benutzer Dateien in unseren Webverzeichnissen ändern kann, können wir den Besitz mitchown
ändern:
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example2.com/html
Die Variable$USER
nimmt den Wert des Benutzers an, bei dem Sie gerade angemeldet sind, als Sie den Befehl senden. Auf diese Weise besitzt unser regulärer Benutzer jetzt die Unterverzeichnissepublic_html
, in denen wir unsere Inhalte speichern werden.
Wir sollten auch unsere Berechtigungen ein wenig ändern, um sicherzustellen, dass der Lesezugriff auf das allgemeine Webverzeichnis und alle darin enthaltenen Dateien und Ordner zulässig ist, damit die Seiten ordnungsgemäß bereitgestellt werden können:
sudo chmod -R 755 /var/www
Ihr Webserver sollte nun über die Berechtigungen verfügen, die er zum Bereitstellen von Inhalten benötigt, und Ihr Benutzer sollte in der Lage sein, Inhalte in den entsprechenden Ordnern zu erstellen.
[[Schritt zwei - Erstellen von Demoseiten für jede Site]] == Schritt 2 - Erstellen von Demoseiten für jede Site
Nachdem wir unsere Verzeichnisstruktur eingerichtet haben, erstellen wir einige Inhalte, die bereitgestellt werden sollen.
Da dies nur zu Demonstrations- und Testzwecken dient, sind unsere Seiten sehr einfach. Wir werden nur eineindex.html
-Seite für jede Site erstellen, die diese bestimmte Domain identifiziert.
Beginnen wir mitexample.com
. Wir können eineindex.html
-Datei in unserem Editor öffnen, indem wir Folgendes eingeben:
nano /var/www/example.com/html/index.html
Erstellen Sie in dieser Datei ein einfaches HTML-Dokument, das die Site angibt, mit der die Seite verbunden ist. In diesem Handbuch sieht die Datei für unsere erste Domain folgendermaßen aus:
Welcome to Example.com!
Success! The example.com server block is working!
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Wir können diese Datei kopieren, um sie als Vorlage für dieindex.html
unserer zweiten Site zu verwenden, indem wir Folgendes eingeben:
cp /var/www/example.com/html/index.html /var/www/example2.com/html/index.html
Öffnen wir nun diese Datei und ändern die relevanten Informationen:
nano /var/www/example2.com/html/index.html
Welcome to Example2.com!
Success! The example2.com server block is working!
Speichern und schließen Sie auch diese Datei. Sie haben jetzt die Seiten, die zum Testen der Serverblockkonfiguration erforderlich sind.
[[Schritt drei - Neue Server-Blockdateien erstellen]] == Schritt Drei - Neue Serverblockdateien erstellen
Serverblockdateien legen die Konfiguration unserer separaten Sites fest und bestimmen, wie der Nginx-Webserver auf verschiedene Domänenanforderungen reagiert.
Zunächst müssen wir das Verzeichnis einrichten, in dem unsere Serverblöcke gespeichert werden, sowie das Verzeichnis, das Nginx mitteilt, dass ein Serverblock für Besucher bereit ist. Das Verzeichnissites-available
enthält alle unsere Serverblockdateien, während das Verzeichnissites-enabled
ymbolische Links zu Serverblöcken enthält, die wir veröffentlichen möchten. Wir können beide Verzeichnisse erstellen, indem wir Folgendes eingeben:
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Note: Dieses Verzeichnislayout wurde von Debian-Mitarbeitern eingeführt, aber wir fügen es hier ein, um die Verwaltung unserer Serverblöcke flexibler zu gestalten (da es einfacher ist, Serverblöcke auf diese Weise vorübergehend zu aktivieren und zu deaktivieren).
Als nächstes sollten wir Nginx anweisen, im Verzeichnissites-enabled
nach Serverblöcken zu suchen. Zu diesem Zweck bearbeiten wir die Hauptkonfigurationsdatei von Nginx und fügen eine Zeile hinzu, in der ein optionales Verzeichnis für zusätzliche Konfigurationsdateien deklariert wird:
sudo nano /etc/nginx/nginx.conf
Fügen Sie diese Zeilen am Ende des Blockshttp {}
hinzu:
include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;
Die erste Zeile weist Nginx an, im Verzeichnissites-enabled
nach Serverblöcken zu suchen, während die zweite Zeile die Speichermenge erhöht, die dem Parsen von Domänennamen zugewiesen wird (da wir jetzt mehrere Domänen verwenden).
Wenn Sie diese Änderungen vorgenommen haben, können Sie die Datei speichern und schließen. Jetzt können wir unsere erste Serverblockdatei erstellen.
Erstellen Sie die erste Serverblockdatei
Standardmäßig enthält Nginx einen Serverblock namensdefault.conf
, den wir als Vorlage für unsere eigenen Konfigurationen verwenden können. Wir können unsere erste Serverblock-Konfigurationsdatei erstellen, indem wir die Standarddatei kopieren:
sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/example.com.conf
Öffnen Sie nun die neue Datei in Ihrem Texteditor mit Root-Rechten:
sudo nano /etc/nginx/sites-available/example.com.conf
Note: Aufgrund der von uns beschriebenen Konfigurationen enden alle Serverblockdateienmust mit.conf
.
Wenn Sie die kommentierten Zeilen ignorieren, sieht die Datei folgendermaßen aus:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Das erste, was wir anpassen müssen, istserver_name
, das Nginx mitteilt, welche Anforderungen auf diesen Serverblock verweisen sollen. Wir deklarieren den Hauptservernamenexample.com
sowie einen zusätzlichen Alias fürwww.example.com
, sodass sowohlwww.
- als auch Nicht-www.
-Anfragen denselben Inhalt erhalten ::
server_name example.com www.example.com;
Note: Jede Nginx-Anweisung muss mit einem Semikolon (;
) enden. Überprüfen Sie daher jede Ihrer Anweisungszeilen, wenn Sie später auf Probleme stoßen.
Als Nächstes möchten wir den Dokumentstamm ändern, der in der Direktiveroot
angegeben ist. Zeigen Sie auf das Dokumentstammverzeichnis der Site, das Sie erstellt haben:
root /var/www/example.com/html;
Wir möchten auch einen Befehltry_files
hinzufügen, der mit einem 404-Fehler endet, wenn der gewünschte Dateiname oder das gewünschte Verzeichnis nicht gefunden wird:
try_files $uri $uri/ =404;
Wenn Sie fertig sind, sieht Ihre Datei ungefähr so aus:
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/example.com/html;
index index.html index.htm;
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Das ist alles, was wir für eine Grundkonfiguration benötigen. Speichern und schließen Sie die Datei, um sie zu beenden.
Erstellen Sie die zweite Serverblockdatei
Nachdem wir unsere erste Serverblockdatei erstellt haben, können wir unsere zweite erstellen, indem wir diese Datei kopieren und nach Bedarf anpassen.
Kopieren Sie es zunächst mitcp
:
sudo cp /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-available/example2.com.conf
Öffnen Sie die neue Datei mit Root-Rechten in Ihrem Texteditor:
sudo nano /etc/nginx/sites-available/example2.com.conf
Sie müssen jetzt alle Informationen ändern, um auf Ihre zweite Domain zu verweisen. Wenn Sie fertig sind, sieht Ihre zweite Server-Blockdatei möglicherweise so aus:
server {
listen 80;
server_name example2.com www.example2.com;
location / {
root /var/www/example2.com/html;
index index.html index.htm;
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Wenn Sie diese Änderungen vorgenommen haben, können Sie die Datei speichern und schließen.
[[Schritt 4 - Aktivieren der neuen Serverblockdateien]] == Schritt 4 - Aktivieren Sie die neuen Serverblockdateien
Nachdem wir unsere Serverblockdateien erstellt haben, müssen wir sie aktivieren, damit Nginx sie den Besuchern zur Verfügung stellen kann. Dazu können wir für jeden Serverblock im Verzeichnissites-enabled
einen symbolischen Link erstellen:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf
sudo ln -s /etc/nginx/sites-available/example2.com.conf /etc/nginx/sites-enabled/example2.com.conf
Wenn Sie fertig sind, starten Sie Nginx neu, damit die folgenden Änderungen wirksam werden:
sudo systemctl restart nginx
[[Schritt 5 - Einrichten der lokalen Hosts-Datei - optional]] == Schritt 5 - Einrichten der lokalen Hosts-Datei (optional)
Wenn Sie zum Testen dieses Verfahrens Beispieldomänen anstelle von tatsächlichen Domänen verwendet haben, können Sie die Funktionalität Ihrer Serverblöcke weiterhin testen, indem Sie die Dateihosts
auf Ihrem lokalen Computer vorübergehend ändern. Dadurch werden alle Anforderungen für die von Ihnen konfigurierten Domänen abgefangen und an Ihren VPS-Server weitergeleitet, genau wie dies das DNS-System tun würde, wenn Sie registrierte Domänen verwenden würden. Dies funktioniert jedoch nur von Ihrem lokalen Computer aus und ist lediglich zu Testzwecken nützlich.
Note: Stellen Sie sicher, dass Sie für diese Schritte auf Ihrem lokalen Computer arbeiten und nicht auf Ihrem VPS-Server. Sie benötigen Zugriff auf die Administratoranmeldeinformationen für diesen Computer.
Wenn Sie sich auf einem Mac- oder Linux-Computer befinden, bearbeiten Sie die lokalehosts
-Datei mit Administratorrechten, indem Sie Folgendes eingeben:
sudo nano /etc/hosts
Wenn Sie sich auf einem Windows-Computer befinden, finden Sie Anweisungen zum Ändern der Hosts-Dateihere.
Die Details, die Sie hinzufügen müssen, sind die öffentliche IP-Adresse Ihres VPS, gefolgt von der Domäne, die Sie verwenden möchten, um diesen VPS zu erreichen:
127.0.0.1 localhost
127.0.1.1 guest-desktop
server_ip_address example.com
server_ip_address example2.com
Dadurch werden alle Anforderungen fürexample.com
undexample2.com
auf unserem lokalen Computer weitergeleitet und umserver_ip_address
an unseren Server gesendet.
[[Schritt 6 - Testen Sie Ihre Ergebnisse]] == Schritt 6 - Testen Sie Ihre Ergebnisse
Nachdem Sie Ihre Serverblöcke konfiguriert haben, können Sie Ihr Setup einfach testen, indem Sie zu den Domänen wechseln, die Sie in Ihrem Webbrowser konfiguriert haben:
http://example.com
Sie sollten eine Seite sehen, die so aussieht:
Wenn Sie Ihre anderen Domains besuchen, sehen Sie auch die Dateien, die Sie für sie erstellt haben.
Wenn alle von Ihnen konfigurierten Sites ordnungsgemäß funktionieren, haben Sie Ihre neuen Nginx-Serverblöcke erfolgreich auf demselben CentOS-Server konfiguriert.
Wenn Sie diehosts
-Datei Ihres Heimcomputers angepasst haben, möchten Sie möglicherweise die Zeilen löschen, die Sie hinzugefügt haben, nachdem Sie überprüft haben, ob Ihre Konfiguration funktioniert. Dadurch wird verhindert, dass Ihre Hosts-Datei mit Einträgen gefüllt wird, die eigentlich nicht erforderlich sind.
Fazit
Zu diesem Zeitpunkt sollte nun ein einziger CentOS 7-Server vorhanden sein, der mehrere Standorte mit separaten Domänen verwaltet. Sie können diesen Prozess erweitern, indem Sie die oben beschriebenen Schritte ausführen, um später weitere Serverblöcke zu erstellen. Es gibt keine Softwarebeschränkung für die Anzahl der Domänennamen, die Nginx verarbeiten kann. Sie können also so viele Domänennamen erstellen, wie Ihr Server verarbeiten kann.