Es gibt eine Website, auf die ich nur über einige IP-Adressen zugreifen kann, die auf der Whitelist stehen. Nennen wir es xyz.com. Außerdem lässt xyz.com nur Verbindungen über https zu.
Ich habe auch einen Debian 8.10-Server mit einer statischen IP-Adresse, die eine der IPs auf der Whitelist ist, und ich habe einen DNS-Namen dafür eingerichtet. Sagen wir, es ist myserver.biz.
Was ich tun möchte, ist eine Verbindung zu myserver.biz auf einem bestimmten Teil (sagen wir 12345) herzustellen und die Anfrage an xyz.com weiterzuleiten, sodass diese Website tatsächlich abgerufen wird und keine SSL-Probleme auftreten, die ich kann keine Ausnahmen für.
Mein erster Versuch bestand darin, iptables
auf meinem Server alle eingehenden Anforderungen auf Port 12345 transparent an die IP-Adresse des Servers von xyz.com auf Port 443 weiterzuleiten.
iptables -t nat -A PREROUTING -p tcp --dport 12345 -j DNAT --to <xyz.com's server IP>:443
iptables -t nat -a POSTROUTING -d <xyz.com's server IP> -j MASQUERADE
Das hat fast geklappt, aber nicht ganz. Wenn ich meinen Browser auf myserver.biz:12345 verweise, funktioniert dies nicht, da xyz.com auf Shared Hosting eingestellt ist und der Server meine Anfrage nicht so verarbeitet, als würde ich eine Verbindung zu xyz.com herstellen.
Allerdings, wenn ich meinen Computer hosts bearbeitet solche Datei xyz.com , dass auf meinen Server statische IP - Adresse aufgelöst, und dann deutete meinem Browser xyz.com:12345, es würde funktionieren. Das bringt mich ein Stück dahin, aber es funktioniert nur auf Systemen, auf denen ich auf die Hosts-Datei zugreifen kann, und ich brauche es, um auf Systemen zu arbeiten, auf denen ich das nicht kann (z. B. iOS-Geräte).
Zusammenfassend benötige ich also:
- Anfragen an myserver.biz:12345 werden an xyz.com:443 weitergeleitet
- Der Hostname der weitergeleiteten Anfrage, um xyz.com anzugeben, damit diese vom Server von xyz'com korrekt aufgelöst wird
- und die Quell-IP-Adresse der weitergeleiteten Anfrage ist die IP-Adresse meines Whitelist-Servers
Gibt es eine Möglichkeit, dies zu erreichen?
Aktualisieren:
Ich habe daran gearbeitet, dies nginx
zu tun, und obwohl ich es geschafft habe, meinen Server dazu zu bringen, auf eine Vielzahl verschiedener Websites weiterzuleiten, kann ich nicht dafür sorgen, dass er mit der von mir benötigten funktioniert! Es wird durchweg ein "502: Bad Gateway" erzeugt. Ich bin mir nicht sicher, was los ist.
Update Nr. 2:
Ich habe es geschafft, nginx
größtenteils zu arbeiten. Der Trick bestand darin, es auf die neueste stabile Version zu aktualisieren und proxy_ssl_server_name on;
in meine Serverdefinition aufzunehmen. Es gibt jedoch ein Problem, bei dem einige Bilder auf xyz.com nicht mit dem Status 403 geladen werden.
Es scheint, dass der 403 darauf zurückzuführen ist, dass der Server versucht, Hotlinking zu verhindern. Ich bin mir nicht sicher, wie ich das zu diesem Zeitpunkt beheben soll ...
quelle
Antworten:
Ich habe es geschafft, dies mit einem Reverse-Proxy zum Laufen zu bringen
nginx
. Nachdem ich einige Experimente durchgeführt hatte, stellte ich fest, dass ich es mit einem SSL-Zertifikat einrichten und dann mit seinerproxy_pass
Funktion auf meine gewünschte Website weiterleiten musste. Die einfachste Version meiner Konfiguration (mit Ausnahme der SSL-Teile) war:Ich habe in der ersten Hälfte dieses Tutorials ein selbstsigniertes Zertifikat erstellt . Es musste aufgenommen werden,
proxy_ssl_server_name on;
da dies ohne Fehlernginx
fehlschlagen würde502: Bad Gateway
.quelle
location
Konfiguration des Nginx-Servers auf einen langen Zufallsstring zu setzen Figuren?