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.