Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der Konfigurationsmethode von Nginx und Apache, die Port 80 gemeinsam nutzen

Detaillierte Erläuterung der Konfigurationsmethode von Nginx und Apache, die Port 80 gemeinsam nutzen

不言
不言Original
2018-05-05 09:57:392642Durchsuche

In diesem Artikel wird hauptsächlich die Konfigurationsmethode für die gemeinsame Nutzung von Port 80 durch Nginx und Apache vorgestellt. Wenn Sie möchten, dass Nginx nicht mit Apache um Port 80 konkurriert, finden Sie am Ende dieses Artikels natürlich auch die Methode zur Änderung des Nginx-Ports Bei Bedarf kann darauf verwiesen werden

Eine typische Nginx + Apache-Anwendungslösung kann darin bestehen, dass Nginx Port 80 belegt, statische Anforderungen filtert und dann dynamisch einen Proxy an Apache-Port 8080 anfordert. Der Vorteil des Proxy-Reverse-Proxys besteht darin, dass beim Zugriff immer Port 80 verwendet wird und Besucher keinen Unterschied bemerken.

Aber einige Anwendungen sind tatsächlich sehr „intelligent“ und erkennen, dass der Port, auf dem sich Apache befindet, 8080 ist, und fügen zu allen relevanten Hyperlinks Folgendes hinzu: 8080. Kann ich trotzdem normalen Zugriff haben, wenn es bereits tot ist? !

Es gibt eine Möglichkeit, dieses Problem zu lösen, nämlich Apache auf Port 80 auszuführen. Derselbe Server hat Nginx und Apache, zwei httpd-Dienste, beide sind 80, wird es keinen Konflikt geben?

Das Folgende ist ein Beispiel.
Ändern Sie

server {
 listen 80;
 server_name www.webyang.net;
}

in der Konfiguration von Nginx.conf.

server {
 listen 192.168.3.3:80;  #指定Nginx只占用某个IP的80端口。
 listen 192.168.10.3:80;  #如果你服务器中有多个IP,还可以指定多个。
 server_name www.webyang.net;
}

Wenn Sie mehrere virtuelle Hosts in Nginx haben, muss jeder einzelne so geändert werden.

Dann ist Apaches httpd.conf
an der Reihe, das Original

Listen 80

in

Listen 127.0.0.1:80

Gibt wie bei Nginx die von Apache belegte IP und den Port an.

Speichern und beenden, Apache neu starten, damit es wirksam wird.
Wenn Sie auch mehrere virtuelle Hosts auf Apache haben. Es besteht keine Notwendigkeit, sie wie bei Nginx einzeln zu ändern, solange sie sich alle auf Port 80 befinden.

Zum Beispiel:


NameVirtualHost *:80
<VirtualHost *:80>
 ServerAdmin hello@abc.com
 DocumentRoot /data/web_server/admin
 ServerName www.webyang.net
</VirtualHost>

Glaubst du, dass alles gut wird? NEIN.

Auf einen solchen Apache kann nur über http://127.0.0.1:80 zugegriffen werden, daher macht es keinen Sinn, dass er Port 80 belegt. Es ist besser, 8080 für Apache und 80 für Nginx zu verwenden.

Wenn Ihr Server zu diesem Zeitpunkt also über mehrere IPs verfügt, können Sie zusätzlich zur Bindung von Apache an 127.0.0.1 auch die IP einer anderen Netzwerkkarte binden, dann ist das Problem gelöst.

Aber die meisten Leute haben nur eine unabhängige IP, daher ist diese Methode für viele eine Fata Morgana.

Ändern Sie eine Idee, Apache ist immer noch Port 8080, ändern Sie die Konfigurationsdatei eines Nginx-Domänennamens

location / {
 try_files $uri @apache;
}
 
location @apache {
 internal;
 proxy_pass http://127.0.0.1:8080;
}
 
location ~ .*.(php|php5)?$ {
 proxy_pass http://127.0.0.1:8080;
}

Zu diesem Zeitpunkt die Domäne Name Alle Aktionen laufen über Apache, einschließlich statischer Dateien.

Es gibt auch viele Leute, die so schreiben:


upstream zend {
 server 127.0.0.1:8080;
}
 
location / {
 proxy_pass  http://zend;
 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;
 proxy_set_header   X-Scheme $scheme;
}
 
location ~ .*.(php|php5)?$ {
 proxy_pass  http://zend;
 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;
 proxy_set_header   X-Scheme $scheme;
}

Es ist ungefähr ähnlich.

Änderung des Nginx-Ports
Ändern Sie die Implementierung der Datei nginx.conf. Der Pfad dieser Datei ist unter Linux /usr/local/nginx/conf/nginx.conf und das Installationsverzeichnis confnginx.conf unter Windows.

server {
 listen  80;
 server_name localhost;
 
 ……
}

wird natürlich in


server {
 listen  81;
 server_name localhost;
 
 location / {
 root html;
 index index.html index.htm;
 }
 ……
}

geändert 8080, 8081 kann alles sein, es muss nicht 81 sein, aber stellen Sie sicher, dass iptable den Zugriff auf diesen Port zulässt.

Beachten Sie die Speicherortkonfiguration:

root html; #根目录,相对于安装目录 
index index.html index.htm; #默认主页

Standardmäßig legen Sie die Datei im HTML-Ordner im Installationsverzeichnis ab und können sie verwenden Nginx-Zugriff.

Verwandte Empfehlungen:


Vergleich zwischen Nginx und Apache

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Konfigurationsmethode von Nginx und Apache, die Port 80 gemeinsam nutzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn