Utiliser Apache au travers d'un proxy (squid)

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).

Merci d’avance. :slight_smile:

Bonjour,

Je ne suis pas sûr d’avoir compris la demande mais j’ai l’impression que ce dont du as besoin c’est du mod_proxy d’Apache et non de Squid.

1 J'aime

je crois aussi x)
j’ai mal compris le fonctionnement du proxy je crois

Bonjour,

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 :

ssh -l root -R 80:localhost:80 -R 443:localhost:443 server-ovh.exemple.com

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

a2enmod ssl proxy_http

et c’est parti !

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.