So richten Sie Nginx-Serverblöcke unter CentOS 7 ein

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 vonsudoverfü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$USERnimmt 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-availableenthält alle unsere Serverblockdateien, während das Verzeichnissites-enabledymbolische 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-enablednach 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-enablednach 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 Direktiverootangegeben 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-enabledeinen 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 Dateihostsauf 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:

Success! The example.com server block is working!

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.