Bonjour, je souhaiterais faire fonctionner mon serveur web (apache) au travers d’un proxy. J’ai installé Squid sur un serveur chez ovh, et le but serait de rediriger certains virtualhost à ma machine connecté au proxy. Je ne sais pas si c’est possible, d’autant plus que d’autre sites sont déjà hébergé sur le serveur (donc la redirection ne doit pas se faire pour tous).
Mais le but serait de masquer mon ip en redirigeant exemple.com sur le proxy (et ça me permettrai d’éviter les changements d’ip).
La solution la plus simple serait de monter un serveur SSH sur ton serveur OVH et que la machine qui a ton serveur apache se connecter et fasse un tunnel entre le port 80/443 du serveur OVH et le même port sur le serveur avec une commande du type :
Tu as besoin des accès root pour écouter sur les ports 80 et 443, l’option -l root n’est pas optionnelle.
Note bien que ton serveur OVH se toucherait bien les condensateur de découplage avec une pareille configuration, une connexion SSH ne demande vraiment pas beaucoup de ressources.
Pour fiabiliser la connexion SSH, il existe des programmes tels que autossh (dans les dépôts).
Intéressant, mais le truc c’est que dans ce cas le serveur apache du serveur ovh ne pourra plus écouter sur ces ports là non?
Et s’il peut le faire, comment appliquer ça (votre commande)?
Eb fait c’est un reverse proxy que tu veux faire.
Un proxy c’est de l’interieur vers l’exterieur.
Quand c est de l’exterieur vers l’interieur c’est un reverse proxy.
Ton client sur internet se connecte en realite vers le reverse proxy qui reçoit directement les connexion sur l’IP publique, puis il renvoie vers le serveur apache du site web.
Un reverse proxy peut etre fait avec apache en utilisant le module mod_proxy indiqué par Bruno1.
cependant, si je comprends bien
Ca ne changerait rien au fonctionnement car si ton IP change il faut reconfigurer ton proxy à chaque fois. Donc tu ne ferais que déporter le problème.
Bon, d’accord, mais tu peux réutiliser l’idée (sans les droits root, du coup) pour faire un tunnel entre ton serveur apache et ton serveur OVH.
Voici une configuration de site en proxy :
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName code.almtesh.net
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPass / http://code.nut.almtesh.net:3000/
ProxyPassReverse / http://code.nut.almtesh.net:3000/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/almtesh.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/almtesh.net/privkey.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Bon, pour moi, le but est un peu différent, en fait, j’ai tous mes services Web en HTTP et j’ai un proxy qui se charge de tout passer en HTTPS pour la publication.
Fais attention, pour le proxy vers les serveur en HTTPS, il faut qu’apache puisse vérifier le certificat, il me semble. Je crois qu’il y a une configuration supplémentaire à faire (ou utiliser simplement le HTTP dans un tunnel SSH ou VPN).
Après, un petit
Tu peux de plus etre en HTTPs entre le client et le proxy et le reverse-proxy (la différence est importante en fait) et serveur web. De fait tu as un certificat « public » entre le client et le reverse-proxy (celui qui est reconnu par les navigateur) et entre le reverse-proxy et ton serveur tu as un certificat specifique juste à cette liaison (il peut donc être privé).
l’intérêt c’est que ton reverse-proxy a ainsi la capacité de pouvoir analyse le contenu (lui voit le HTTP ), ( par exemple tu peux donc avoir un anti-virus au passage). Et de fait, aucun besoins de tunnel.