Nginx sendet Anfragen immer an den lokalen Apache

Nginx sendet Anfragen immer an den lokalen Apache

Ich verwende Apache (Port 81) und NGINX (Port 80) auf demselben Server. Für www.example.com habe ich Folgendes in der NGINX-Konfigurationsdatei.

Das Problem besteht darin, dass beim Starten von Apache auf diesem Server ALLE Anfragen für www.example.com an den Apache-Server auf Port 81 gehen. Dies ist im Upstream nicht konfiguriert und www.example.com ist auch in der lokalen Apache-Instanz nicht konfiguriert, sodass überall Fehler auftreten.

Ich möchte nicht, dass dies lokal erfolgt, sondern nur extern, wie im Upstream definiert.

Wenn ich Apache stoppe, wird der Upstream verwendet und die Anfragen von nginx werden an die im Upstream definierten Server weitergeleitet. Wenn ich Apache erneut starte, werden alle Anfragen lokal an Apache weitergeleitet.

Wie kann ich also verhindern, dass die Anfragen beim Laden an Apache gesendet werden und dafür sorgen, dass nginx immer den definierten Upstream verwendet?

upstream mainserver {
    server w1.externalserver.nl;
    server w2.externalserver.nl;
}

server {
listen 80;

server_name www.example.com;

location / {
    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-Forwarded-Proto $scheme;
    proxy_pass http://mainserver;

}
}

Antwort1

Ich schlage vor, die Portnummer in den Nginx-Konfigurationen zu definieren:

upstream mainserver {
    server w1.externalserver.nl:81;
    server w2.externalserver.nl:81;
}

Und überprüfen Sie, ob Apache auf Ihrem richtigen Port lauscht. Für Ubuntu-Installationen:apache2.confoderports.conf(überprüfen Sie auch diese Datei, sie enthält möglicherweise Einstellungen zum Umschreiben):

Listen 127.0.0.1:81

Aktualisierung 1

+-------------+
| server 1    | <------- http request :80
|             |
| nginx ----+ | -------> redirect to server 2 (You want)
|           | |
| Apache <--+ | internal redirect to local Apache (problem place)
+-------------+

1). Auf Server 1 laufen sowohl Apache als auch nginx. curl -I http://example.com:80 Überprüfen Sie das Feld „Server“ in der Antwort. Wenn Apache vorhanden ist, überprüfen Sie sorgfältig alle Konfigurationen: apache2.conf, ports.conf, Konfigurationen virtueller Hosts – irgendwo wird Port 80 erwähnt und Apache „rewrite“ nginx „listen“.

2). Versuchen Sie proxy_pass http://mainserver;es proxy_pass mainserver;- ohne Protokoll.

verwandte Informationen