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

So richten Sie eine Subdomain ein oder hosten mehrere Domains mit nginx auf einem Linux-Server

Wussten Sie, dass Sie mehrere Domains und Subdomains mit einer einzigen IP-Adresse in Linux über Nginx-Serverblöcke (oder virtuelle Hosts in Apache) hosten können?

Nun, wenn Sie nicht wissen, wie das geht, werden Sie beim Lesen dieses Tutorials zwei Domains und eine Subdomain einrichten, die beide auf dieselbe IP-Adresse und denselben Host auf demselben Server verweisen.
Hier ist die allgemeine Annahme für dieses Setup:

  • IP-Adresse :220.168.32.101
  • Domainnamen :example.com, blog.example.com, fakenews.com

Bevor Sie mit dem Tutorial beginnen, müssen Sie zunächst alle Ihre Domains und Subdomains über Ihren DNS-Anbieter auf die einzelne IP-Adresse verweisen (bearbeiten Sie A , CNAME ).
Wenn Sie dies jedoch lokal testen möchten, bearbeiten Sie die Datei /etc/hosts Konfigurationsdatei und fügen Sie Folgendes hinzu:

220.168.32.101 example.com blog.example.com
220.168.32.101 fakenews.com

Und wenn Sie diese Domains lokal auf dem Server anpingen, erhalten Sie eine OK-Antwort (200).

Jetzt befolgen wir die Schritte zum Einrichten dieser Domainnamen:

1. Nginx installieren und starten

Verwenden Sie den folgenden Befehl, um nginx auf Ubuntu zu installieren

$ sudo apt install nginx
# now start it
$ sudo nginx

2. Testen Sie nginx

Überprüfen Sie eine der Domänen oder IP-Adressen in Ihrem Browser, um sicherzustellen, dass nginx ordnungsgemäß funktioniert. Der Browser gibt eine Standard-nginx-Seite aus.

3. Richten Sie die Testverzeichnisse für jede Domain ein

Bis jetzt wurden alle Domains korrekt eingerichtet, aber es gibt ein großes Problem, alle zeigen auf dieselbe Seite. Wir müssen diese Domänen trennen, um auf ihre eigenen Seiten zu verweisen. Dazu werde ich Testverzeichnisse und HTML-Seiten einrichten.

  • Verzeichnisse für jede Domain und Subdomain erstellen
$ cd /var/www
$ sudo mkdir example.com blog.example.com fakenews.com
  • Einfache HTML-Seiten für jeden erstellen
$ sudo touch example.com/index.html
$ sudo touch blog.example.com/index.html
$ sudo touch fakenews.com/index.html
  • Zum Schluss fügen Sie in jede index.html unterschiedliche Inhalte ein Dateien

4. Erstellen von Serverblöcken für jede Domain und Subdomain

Nginx bietet Standard Serverblock in /etc/nginx/sites-available . Wir werden diesen Serverblock für jede Domain kopieren und für jede Modifikation vornehmen.
Außerdem erstellen wir einen symbolischen Link einer neuen Datei

## For example.com domain
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
## similarly do for others also.

Nach der Änderung sieht die neue Datei für example.com nun so aus Domäne

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/example.com;
        index index.html;
        server_name example.com;
}

Hier default_server bedeutet, wenn keine der anderen Domains auflöst, ist der letzte Ausweg, diesen Serverblock aufzulösen.

HINWEIS:Es gibt nur einen Standardserverblock in nginx mit demselben Port.

Ähnlich sind die Konfigurationen für die anderen beiden Domains:

## For blog.example.com subdomain
server {
        listen 80;
        listen [::]:80;
        root /var/www/blog.example.com;
        index index.html;
        server_name blog.example.com;
}

## For fakenews.com domain
server {
        listen 80;
        listen [::]:80;
        root /var/www/fakenews.com;
        index index.html;
        server_name fakenews.com;
}

Bonus: Angenommen fakenews.com Domain auf anderem Port lauschen (sagen wir 2368 Hafen ) und Sie den Proxy-Port in nginx auf den Standardwert 80 setzen möchten Port, dann können Sie Standort verwenden innerhalb des Servers blockieren Block wie folgt:

server {
   ## other configuration as above
    # ...
  location {
     proxy_pass http://127.0.0.1:2368;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header HOST $http_host;
  }
}

Das war's fürs Erste, bei Fragen einfach in die Kommentare unten schreiben.


Linux
  1. So installieren Sie den Nginx-Webserver unter Linux

  2. So erstellen Sie einen virtuellen Nginx-Host (Serverblock)

  3. So richten Sie einen zentralen Protokollierungsserver mit Rsyslog ein

  4. So richten Sie passwortloses SSH unter Linux ein

  5. Bedienen Sie mehrere Domains mithilfe virtueller Hosts

So installieren Sie den Nginx-Webserver unter Alpine Linux

So installieren Sie Nginx auf einem Arch Linux Cloud Server

Hosten Sie mehrere Websites auf einem einzigen Server mit Apache unter Ubuntu 18.04

So richten Sie Nginx Cache auf einem LAMP-Server ein

So richten Sie den Nginx-Cache auf dem LEMP-Server ein

So richten Sie einen Linux-VPN-Server und -Client mit OpenVPN ein