1. Anwendungsszenarien
Wir stoßen häufig auf Situationen, in denen mehrere Websites auf demselben Server eingerichtet sind. Eine gängige Praxis besteht darin, unterschiedliche Ports für verschiedene Sites zu konfigurieren, damit auf sie in Form von ip:port zugegriffen werden kann.
Aber schließlich ist die Verwendung von IP für den Zugriff umständlich, nicht anschaulich und nicht leicht zu merken. Dann können wir unterschiedliche Domänennamen an jede Site binden. (Hier sprechen wir nur über die Situation im öffentlichen Netzwerk.) Selbst wenn wir nur einen Domänennamen haben, können wir mehrere Domänennamen der zweiten Ebene einrichten, was mit Nginx leicht zu erreichen ist.
2. Grundvoraussetzungen
Normalerweise veröffentlichen Online-Tutorials direkt einen Code für die Konfigurationsdatei und teilen uns mit, dass dies in Ordnung ist. Ich habe jedoch festgestellt, dass viele Anfänger nicht so erfolgreich sein können wie Blogger, nachdem sie sich die Konfiguration des Tutorials angesehen haben. Lassen Sie uns als Nächstes über die Grundprinzipien sprechen.
Zuallererst müssen Sie einen Domainnamen haben, den Sie verwalten können. Ich habe zum Beispiel den Domainnamen postmsg.cn, der mehrere Subdomainnamen für Tausende von Generationen generieren kann...
Zweitens Es muss sich um einen zugänglichen öffentlichen Netzwerkserver handeln. Auf diesem Server können Sie Ihre eigene Website erstellen, einen, zwei, drei oder vier, mit verschiedenen entsprechenden Ports.
Dann gibt es noch die Bindung des Domainnamens und der Site, eine Karotte und eine Grube, natürlich können Sie auch mehrere Karotten und eine Grube haben...
3. Allgemeine Konfiguration
Es gibt zwei Orte, die konfiguriert werden müssen, sind auch etwas, das einige Anfänger gerne übersehen.
(1) Domänennamenkonfiguration
Es ist üblich, dass jeder daran denkt, die Auflösung des Domänennamens auf unseren öffentlichen Netzwerkserver zu verweisen. Beim Parsen können Sie nur IP hinzufügen, aber keine Portnummer, d. h. Sie können nur den Standardport 80 verwenden. (Die Weiterleitung von Domänennamen wird nicht besprochen)
Wenn Sie die Bindung von Subdomänennamen implementieren möchten, müssen Sie diese während der Domänennamenauflösung ordnungsgemäß konfigurieren. Andernfalls wird es nicht funktionieren, sich nur auf Nginx zu verlassen.
Wenn ich beispielsweise den Subdomainnamen p.postmsg.cn an Port 8001 des Servers binden möchte, muss ich zunächst sicherstellen, dass die Zugriffsanforderung auf p.postmsg.cn den Server erreichen kann, und dann kann Nginx sie verarbeiten .
Fügen Sie zu diesem Zeitpunkt entweder einen Host-Eintrag von p im Domänennamen mit einer Datensatzauflösung hinzu oder konfigurieren Sie den Platzhalter * im Host-Eintrag (jeder Zugriff auf *.postmsg.cn wird auf den entsprechenden Server aufgelöst, verwenden Sie ihn mit Vorsicht). , nur @ und www setzen ist definitiv nicht möglich.
int in Nginx
Wenn Sie die Nginx-Konfiguration ändern, können Sie diese direkt in der Standardkonfigurationsdatei ändern (z. B. /etc/nginx/nginx.conf, wie im folgenden Codeausschnitt gezeigt) oder Sie können eine neue unabhängige Konfigurationsdatei in a erstellen Erstellen Sie ein bestimmtes Verzeichnis und fügen Sie dann Konfigurationsdateien in dieses Verzeichnis ein (wie in Zeile 17 gezeigt).
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; }
Dies ist das Format für Nginx zum Lesen von Konfigurationsdateien. Unsere Konfiguration wird normalerweise in den Block http {} und den Serverblock geschrieben und im Serverblock konfiguriert. Wie gerade erwähnt, kann der Serverblock in eine separate Datei geschrieben und in nginx.conf eingebunden werden. Gleichzeitig wird verschachteltes Include unterstützt.
Als nächstes schauen wir uns an, wie der Serverblock geschrieben ist:
server { listen 80; server_name p.postmsg.cn; location / { proxy_pass http://127.0.0.1:8008; proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } #access_log logs/p_access.log; }
Der Servername entspricht hier dem konfigurierten Domänennamen und Proxy_Pass entspricht der tatsächlichen Adresse des Proxys.
(3) Hinweis 1
Stellen Sie sicher, dass Sie Port 80 Nginx überlassen, das für den Proxy verantwortlich ist. Wir können Apache httpd, nginx und tomcat gleichzeitig auf einem Server verwenden, aber die Domänennamenauflösung kann nur den Standardport 80 verwenden, und die für die Agentur verantwortlichen Kameraden müssen die Anfragen aus erster Hand erhalten.
(4) Hinweis 2
Es ist sofort wirksam. Einige Freunde haben das Gefühl, alles richtig konfiguriert und den Dienst neu gestartet zu haben, können aber einfach nicht die gewünschten Ergebnisse sehen. Hier gibt es drei mögliche Faktoren.
Wirksamkeitszeit der Domainnamenauflösung
Lokaler DNS-Cache.
Browser-Cache.
Der Dienst wurde nicht neu gestartet.
Das obige ist der detaillierte Inhalt vonSo binden Sie den sekundären Domänennamen des Nginx-Reverse-Proxys. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!