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    

Artikel empfehlen

Detailliertes Beispiel für MySQL-Joint-Tabellen-Update-Daten

1.MySQL UPDATE JOIN-Syntax In MySQL können Sie di...

Linux /etc/network/interfaces Konfigurationsschnittstellenmethode

Die Datei /etc/network/interfaces wird in Linux z...

Div verschachteltes HTML ohne Iframe

Als ich kürzlich Hausaufgaben machte, musste ich e...

CSS3-Flip-Card-Nummern-Beispielcode

Ich habe heute eine Aufgabe von der Firma erhalte...

Connector-Konfiguration in Tomcat

JBoss verwendet Tomcat als Webcontainer. Die Konf...

So erhalten Sie die Schnittmenge/Differenz/Vereinigung zweier Mengen in MySQL

Typische MySQL-Szenarien: Schnittmenge und Differ...

Docker-Volumes-Dateizuordnungsmethode

Hintergrund Wenn Sie am Blockchain-Protokollmodul...

uniapp realisiert die Aufnahme-Upload-Funktion

Inhaltsverzeichnis uni-app Einführung HTML-Teil j...

vue + springboot realisiert die Login-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Implementierungscode für die Dateimontage von DockerToolBox

Wenn Sie Docker verwenden, stellen Sie möglicherw...

Tomcat verwendet Thread-Pool zur Verarbeitung gleichzeitiger Remote-Anfragen

Wenn wir verstehen, wie Tomcat gleichzeitige Anfr...