
Szenario:
Aufgrund der begrenzten Anzahl von IPs werden mehrere Domänen in dieselbe IP-Adresse aufgelöst. Diese Domänen laufen jedoch möglicherweise nicht alle auf demselben Webserver, derselben VM oder sogar derselben dedizierten Maschine. Daher möchte ich die Domänen am Eintrittspunkt in das private Netzwerk an den richtigen Ort weiterleiten, sofern die Domäne in der URL enthalten ist.
Wie kann ich das machen?
Antwort1
Die meisten Router/Firewalls ermöglichen die Umleitung des Datenverkehrs basierend auf einem bestimmten Port. Beispielsweise wird der gesamte SMTP-Datenverkehr (Port 25) an 192.168.1.1 umgeleitet.
Wenn Sie jedoch mehrere Server haben, um Ihren Datenverkehr abzuwickeln (1 Server pro Domäne), müssen Sie so etwas wie einen Reverse-Proxy installieren (nginxunterstützt dies für HTTP, IMAP, POP3). Beispielsweise wird der gesamte Datenverkehr an Port 80 umgeleitet, auf 192.168.1.2
dem nginx läuft, und wird je nach Hostname entweder zu localhost
oder umgeleitet 192.168.1.4
.
Antwort2
Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstehe. Wenn ja, laufen bei Ihnen mehrere Rechner als HTTP-Server hinter NAT. Wenn eine Anfrage eingeht, möchten Sie sie doch an einen Ihrer Server weiterleiten, oder?
Wenn Sie Apache und mod_rewrite verwenden, können Sie es möglicherweise folgendermaßen abrufen:
Prost.
Antwort3
Ich habe etwas Ähnliches gemacht mit demProxyPassDirektive unter mod_proxy in Apache.
Verwenden Sie zunächstNamensbasiertes virtuelles Hostingum zuzulassen, dass verschiedene Domänen unterschiedliche Sites mit derselben IP hosten, benötigen Sie für die Domänen, die mit einem internen Webserver verknüpft sind, eine Konfiguration wie die folgende:
# Within your VirtualHost definition
ServerName somedomain.com
ProxyPass / http://10.0.1.42/
ProxyPassReverse / http://10.0.1.42/
Dies führt dazu, dass alle Anfragen http://somedomain.com
transparent an eine interne Site weitergeleitet werden, die auf gehostet wird http://10.0.1.42
.
HTH
Antwort4
Ich habe vor einiger Zeit nach dem gleichen gesucht. Bin nie dazu gekommen, es zu tun, aber hier ist, was meiner Meinung nach funktionieren könnte.
Verwenden Sie das mod
_proxy-Modul und verwenden Sie die noproxy
Direktive.