Detaillierte Erläuterung der drei Möglichkeiten zum Konfigurieren virtueller Nginx-Hosts (basierend auf IP)

Detaillierte Erläuterung der drei Möglichkeiten zum Konfigurieren virtueller Nginx-Hosts (basierend auf IP)

Nginx unterstützt drei Möglichkeiten zum Konfigurieren virtueller Hosts: IP-basierte virtuelle Hostkonfiguration, portbasierte virtuelle Hostkonfiguration und domänennamenbasierte virtuelle Hostkonfiguration.

Detaillierte Erläuterung der drei Möglichkeiten zum Konfigurieren virtueller Nginx-Hosts (basierend auf Ports) https://www.jb51.net/article/14977.htm

Detaillierte Erläuterung der drei Möglichkeiten zum Konfigurieren virtueller Nginx-Hosts (basierend auf Domänennamen) https://www.jb51.net/article/14978.htm

1. IP-basierte virtuelle Hostkonfiguration

Wenn derselbe Server über mehrere IPs verfügt, können Sie die IP-basierte Hostkonfiguration virtueller Maschinen verwenden, um verschiedene Dienste an unterschiedliche IPs zu binden.

1.1 Angenommen, der Server hat die IP-Adresse 192.168.2.150, verwenden Sie zuerst ifconfig, um die anderen drei IPs an dieselbe Netzwerkschnittstelle zu binden.

[root@localhost ~]# ifconfig ens33:1 192.168.2.151/24 up
[root@localhost ~]# ifconfig ens33:2 192.168.2.152/24 up
[root@localhost ~]# ifconfig ens33:3 192.168.2.153/24 up
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.2.106 Netzmaske 255.255.255.0 Broadcast 192.168.2.255
 inet6 fe80::2a8d:be6:a4a8:ea0 Präfixlänge 64 Bereichs-ID 0x20<Link>
 Ether 00:0c:29:16:90:ae txqueuelen 1000 (Ethernet)
 RX-Pakete 1220 Bytes 87955 (85,8 KiB)
 RX-Fehler 0 verloren 0 Überläufe 0 Frame 0
 TX-Pakete 206 Bytes 23755 (23,1 KiB)
 TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0

ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.2.151 Netzmaske 255.255.255.0 Broadcast 192.168.2.255
 Ether 00:0c:29:16:90:ae txqueuelen 1000 (Ethernet)

ens33:2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.2.152 Netzmaske 255.255.255.0 Broadcast 192.168.2.255
 Ether 00:0c:29:16:90:ae txqueuelen 1000 (Ethernet)

ens33:3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
 inet 192.168.2.153 Netzmaske 255.255.255.0 Broadcast 192.168.2.255
 Ether 00:0c:29:16:90:ae txqueuelen 1000 (Ethernet)

lo: Flags = 73 <UP, LOOPBACK, RUNNING> mtu 65536
 inet 127.0.0.1 Netzmaske 255.0.0.0
 inet6 ::1 Präfixlänge 128 Bereichs-ID 0x10<Host>
 loop txqueuelen 1 (Lokaler Loopback)
 RX-Pakete 72 Bytes 6252 (6,1 KiB)
 RX-Fehler 0 verloren 0 Überläufe 0 Frame 0
 TX-Pakete 72 Bytes 6252 (6,1 KiB)
 TX-Fehler 0 verloren 0 Überläufe 0 Träger 0 Kollisionen 0

1.2 Die den 3 IPs entsprechenden Domänennamen lauten wie folgt. Konfigurieren Sie die Hostdatei des Hosts zum einfachen Testen

[root@localhost ~]# vim /etc/hosts
[root@localhost ~]# cat /etc/hosts
127.0.0.1 lokaler Host lokaler Host.lokale Domäne lokaler Host4 lokaler Host4.lokale Domäne4
::1 lokaler Host lokaler Host.lokale Domäne lokaler Host6 lokaler Host6.lokale Domäne6
192.168.2.151 www.test151.com
192.168.2.152 www.test152.com
192.168.2.153 www.test153.com

Es kann die Situation einer DNS-Abfrage simulieren.

Hinweis: Führen Sie nach dem Einrichten der Hosts-Datei unbedingt den folgenden Befehl aus, damit dieser wirksam wird

1. Rufen Sie die Kommandozeile mit cmd unter Windows auf

C:\Benutzer\1234>ipconfig /flushdns

Die Windows-IP-Konfiguration hat den DNS-Auflösungscache erfolgreich geleert.

1.3 Erstellen Sie ein Stammverzeichnis für den virtuellen Host, um Webseiten zu speichern und die Homepage-Datei index.html zu erstellen

[root@localhost /]# mkdir -p /data/www
[root@localhost /]# cd /data/www
[root@localhost www]# mkdir 151
[root@localhost www]# mkdir 152
[root@localhost www]# mkdir 153
[root@localhost www]# echo "192.168.2.151" > 151/index.html
[root@localhost www]# echo "192.168.2.152" > 152/index.html
[root@localhost www]# echo "192.168.2.153" > 153/index.html
[root@localhost www]# ls
151 152 153

1.4 Ändern Sie nginx.conf und fügen Sie die Konfigurationsdatei des virtuellen Hosts in die Hauptdatei ein

[root@localhost /]# cd /usr/local/nginx/conf/
[root@localhost conf]# ls
fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf
fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default
[root@localhost conf]# vim nginx.conf

Fügen Sie die folgende Konfiguration am Ende der Datei nginx.conf hinzu

# Suchen Sie im http-Abschnitt nach folgendem Inhalt und löschen Sie das "#" vor jeder Zeile
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
   '$status $body_bytes_sent "$http_referer" '
   '"$http_user_agent" "$http_x_forwarded_for"';

# Fügen Sie die folgende Anweisung vor dem letzten „}“ am Ende der Konfigurationsdatei hinzu, wie unten gezeigt: include vhost/*.conf;
}

1.5 Bearbeiten Sie die Konfigurationsdatei für jede IP (Konfigurationsdatei für jeden virtuellen Host).

[root@localhost conf]# mkdir -p vhost
[root@localhost conf]# cd vhost/
[root@localhost vhost]# cat www.test151.conf
 Server {
 hören Sie 192.168.2.151:80;
 # Auf den tatsächlichen Domänennamen konfigurieren. Der Domänenname jeder Konfigurationsdatei des virtuellen Hosts ist derselbe #server_name www.test.com;

 Zugriffsprotokoll /data/logs/www.test151.com.log main;
 Fehlerprotokoll /data/logs/www.test151.com.error.log;

 Standort / {
  Wurzel /data/www/151;
  Index Index.html Index.htm;
 }
 }

[root@localhost vhost]# cat www.test152.conf
 Server {
 hören Sie 192.168.2.152:80;
 # Auf den tatsächlichen Domänennamen konfigurieren. Der Domänenname jeder Konfigurationsdatei des virtuellen Hosts ist derselbe #server_name www.test.com;

 Zugriffsprotokoll /data/logs/www.test152.com.log main;
 Fehlerprotokoll /data/logs/www.test152.com.error.log;

 Standort / {
  Wurzel /data/www/152;
  Index Index.html Index.htm;
 }
 }

[root@localhost vhost]# cat www.test153.conf
 Server {
 hören Sie 192.168.2.153:80;
 # Auf den tatsächlichen Domänennamen konfigurieren. Der Domänenname jeder Konfigurationsdatei des virtuellen Hosts ist derselbe #server_name www.test.com;

 Zugriffsprotokoll /data/logs/www.test153.com.log main;
 Fehlerprotokoll /data/logs/www.test153.com.error.log;

 Standort / {
  Wurzel /data/www/153;
  Index Index.html Index.htm;
 }
 }

1.6 Erstellen Sie eine Protokolldatei, sonst kann Nginx nicht gestartet werden

[root@localhost /]# mkdir -p /data/logs
[root@localhost /]# touch /data/logs/www.test151.com.log
[root@localhost /]# touch /data/logs/www.test151.com.error.log
[root@localhost /]# touch /data/logs/www.test152.com.log
[root@localhost /]# touch /data/logs/www.test152.com.error.log
[root@localhost /]# touch /data/logs/www.test153.com.log
[root@localhost /]# touch /data/logs/www.test153.com.error.log
[root@localhost /]# ls /data/logs/
www.test151.com.error.log www.test152.com.error.log www.test153.com.error.log
www.test151.com.log www.test152.com.log www.test153.com.log

1.7 Testen Sie die Konfigurationsdatei, bevor Sie nginx starten

[root@localhost /]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -t
nginx: die Syntax der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist in Ordnung
nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist erfolgreich
# Starten Sie nginx
[root@localhost sbin]# ./nginx

1.8 Testdateien

[root@localhost sbin]# curl www.test151.com
192.168.2.151
[root@localhost sbin]# curl www.test152.com
192.168.2.152
[root@localhost sbin]# curl www.test153.com
192.168.2.153

Anhang: Bei der Konfiguration aufgetretene Probleme

1. Beim Testen von Konfigurationsdateien aufgetretene Probleme

[root@localhost sbin]# ./nginx -t
nginx: [emerg] unerwartetes "}" in /usr/local/nginx/conf/nginx.conf:122
nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf fehlgeschlagen

Lösung: Ich habe vergessen, in der folgenden Anweisung ein Semikolon hinzuzufügen

vhost/*.conf einschließen;

2. Beim Testen mit curl www.test*.com wird immer das gleiche Ergebnis erzielt.

Lösung: Schreiben Sie die IP-Adresse nicht nach dem Servernamen. Nach dem Servernamen kann nur der Domänenname hinzugefügt werden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Problems beim Abrufen einer echten IP basierend auf dem Nginx-Reverse-Proxy
  • Python-Implementierungsbeispiel zum Abrufen der IP-Adresse und der Verkehrsstatistik des Nginx-Servers
  • Detaillierte Erläuterung der Konfiguration von Nginx zum Abrufen der Benutzer-IP bei Verwendung der CDN-Beschleunigung
  • So stellen Sie mit Nginx mehrere Vue-Projekte unter demselben Domänennamen bereit und verwenden einen Reverse-Proxy
  • Lösung für mehrere 302-Antworten im Nginx-Proxy (Nginx Follow 302)
  • Der Reverse-Proxy-Dienst von Nginx verursacht beim Zugriff auf Ressourcen aufgrund eines Fehlers in der Konfigurationsdatei einen 404-Fehler
  • Detaillierte Erläuterung des Prozesses, mit dem Nginx die echte Quell-IP erhält, nachdem mehrere Proxy-Ebenen durchlaufen wurden

<<:  Detaillierte Erläuterung von Beispielen für JS-Closure- und Garbage-Collection-Mechanismen

>>:  MySQL verwendet Trigger, um das Zeilenlimit der Tabelle in der Datenbank zu lösen. Detaillierte Erklärung und Beispiele

Artikel empfehlen

Detaillierte Erläuterung der ECharts-Mausereignisverarbeitungsmethode

Ein Ereignis ist eine vom Benutzer oder dem Brows...

Aufbauprinzip des Nexus-Privatservers und Tutorial-Analyse

eins. Warum einen privaten Nexus-Server erstellen...

Installations-Tutorial für die ZIP-Archivversion von MySQL 5.7

In diesem Artikel finden Sie das Installations-Tu...

Nginx-Lastausgleichskonfiguration, automatischer Umschaltmodus bei Ausfallzeiten

Streng genommen verfügt nginx nicht über eine Int...

Javascript-Grundlagen zu integrierten Objekten

Inhaltsverzeichnis 1. Einführung in integrierte O...

Detaillierte Erläuterung des Falls des JavaScript-Upload-Dateilimitparameters

Projektszenario: 1. Einschränkungen beim Hochlade...

Grafisches Tutorial zur Installation von MySQL 8.0.15 und Datenbankgrundlagen

Die Installation der MySQL-Software und die Daten...

Detaillierte Darstellung des MySQL 5.7.33-Installationsprozesses

Inhaltsverzeichnis Download des Installationspake...

MySQL-Implementierung für pessimistisches und optimistisches Sperren

Inhaltsverzeichnis Vorwort Tatsächlicher Kampf 1....

Analyse der Implementierungsschritte für die Docker-Containerverbindung

Im Allgemeinen verwenden wir nach dem Start des C...

Detaillierte Erklärung der Datentypen in den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...

Beispiel für einen WeChat-Applet-Rechner

Beispiel für einen WeChat-Applet-Rechner. Zu Ihre...

Installation und Verwendung der Ubuntu 18.04 Serverversion (Bild und Text)

1 Schritte zur Systeminstallation Betriebssystemv...