Il existe un site Web auquel je ne peux accéder qu'à partir de quelques adresses IP figurant sur la liste blanche. Appelons cela xyz.com. De plus, xyz.com autorise uniquement les connexions via https.
J'ai également un serveur Debian 8.10 avec une adresse IP statique qui est l'une des adresses blanches, et j'ai un nom DNS configuré pour cela. Disons que c'est myserver.biz.
Ce que je voudrais faire est de me connecter à myserver.biz sur un élément particulier (par exemple, 12345) et de le transmettre à la demande à xyz.com, de sorte qu'il obtiendra effectivement ce site Web et ne posera aucun problème SSL. ne créez pas d'exceptions pour.
Ma première tentative a été d'utiliser iptables
sur mon serveur pour transférer de manière transparente toutes les demandes entrantes sur le port 12345 à l'adresse IP du serveur de xyz.com sur le port 443. Par exemple:
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
Cela a presque fonctionné, mais pas tout à fait. Si je pointais mon navigateur sur myserver.biz:12345, cela ne fonctionnerait pas car xyz.com est hébergé sur un hébergement partagé et le serveur ne traiterait pas ma demande comme si je me connectais à xyz.com.
Cependant, si j'édité mon hosts de l' ordinateur fichier de telle sorte que xyz.com résolu à l' adresse IP statique de mon serveur, puis a mon navigateur pour xyz.com:12345, il serait travailler. Cela me permet de faire une partie du chemin, mais cela ne fonctionne que sur les systèmes où je peux accéder au fichier hosts, et je dois le faire sur des systèmes où je ne peux pas le faire (par exemple, les appareils iOS).
Donc en résumé, j'ai besoin de:
- demandes à myserver.biz:12345 à transmettre à xyz.com:443
- le nom d'hôte de la demande transmise pour spécifier xyz.com afin qu'il soit résolu correctement par le serveur de xyz'com
- et l'adresse IP source de la demande transmise est l'adresse IP de mon serveur figurant sur la liste blanche
Y at-il un moyen que je peux accomplir cela?
Mise à jour:
Je me suis employé nginx
à le faire, et bien que j'ai réussi à faire transférer mon serveur vers différents sites Web, je ne parviens pas à le faire fonctionner avec celui dont j'ai besoin! Il produit systématiquement un "502: Bad Gateway". Je ne suis pas sûr de ce qui ne va pas.
Mise à jour # 2:
J'ai réussi à nginx
travailler surtout. L'astuce consistait à le mettre à jour vers la dernière version stable et à l'inclure proxy_ssl_server_name on;
dans la définition de mon serveur. Cependant, il y a maintenant un problème où certaines images sur xyz.com ne sont pas chargées avec le statut 403.
Il semble que la 403 soit due au serveur qui tente d’empêcher la création de liens hypertextes. Vous ne savez pas comment résoudre ce problème à ce stade ...
la source
Réponses:
J'ai réussi à faire fonctionner cela en utilisant un proxy inverse, en particulier
nginx
. Après quelques expériences, j'ai découvert que ce que je devais faire était de le configurer avec un certificat SSL, puis d'utiliser saproxy_pass
fonctionnalité pour le transférer sur le site Web de mon choix. La version la plus simple de ma configuration (avec les composants SSL exclus) était:J'ai mis en place un certificat auto-signé en utilisant la première moitié de ce tutoriel . Il était nécessaire d'inclure
proxy_ssl_server_name on;
car sans cela celanginx
échouerait avec une502: Bad Gateway
erreur.la source
location
configuration du serveur nginx sur une longue chaîne de caractères aléatoires? personnages?