Un reverse proxy Apache avec mod_proxy
Un reverse proxy (proxy inversé), dans l’utilisation que je vais vous décrire ici, est une sorte passerelle entre un nom de domaines et un service (port). En gros, il nous sert à accéder à l’interface de cups non pas en via l’adresse http://serveur.domaine.fr:631 mais via http://print.domaine.fr ou encore à l’interface de transmission via http://torrent.domaine.fr au lieu de http://serveur.domaine.fr:9091. Vous l’aurez compris, on utilise un nom de domaine pour accéder à l’interface d’un service sans avoir à préciser le port.
Cet article détaille comment configurer Apache et ne traite pas de l’attribution du nom de domaine à votre host.
Installation Apache
Dans un premier temps il nous faut installer Apache2, le proxy repose tout de même sur lui.
# apt-get install apache2
Activation des modules utilisés
Pour utiliser Apache en mode proxy inverse, il nous faut activer les 2 modules proxy
et proxy_http
via la commande a2enmod
.
# a2enmod proxy proxy_http
Le module proxy permet l’implémentation d’un serveur mandataire / passerelle.
Le module proxy_http apporte le support des requêtes HTTP et HTTPS au module proxy
.
Pour activer ces services, il est nécessaire de redémarrer apache.
# service apache2 restart
Mise en place du virtualhost
Créons maintenant notre virtualhost, le modèle ci-dessous est fait pour cups mais peut être personnalisé pour toutes les interfaces Web de vos services.
# vi /etc/apache2/sites-available/cups.domaine.fr.conf <VirtualHost *:80> ServerName cups.domaine.fr ServerAdmin postmaster@domaine.fr ProxyPass / http://127.0.0.1:631/ ProxyPassReverse / http://127.0.0.1:631/ ProxyRequests Off </VirtualHost>
- ServerName permet de spécifier le nom de domaine voulu
- ProxyPass et ProxyPassReverse donnent la correspondance entre le path voulu et l’adresse du serveur destinataire et ajustent l’URL dans les en-têtes HTTP.
- ProxyRequests permet d’activer et de désactiver la fonctionnalité de serveur mandataire, doit être à Off pour des raisons de sécurité expliquée ici.
Maintenant que notre fichier de configuration virtualhost est défini, nous devons l’activer puis recharger Apache.
# a2ensite cups.domaine.fr.conf # service apache2 reload
Vous avez maintenant accès à l’interface de cups via le nom de domaine http://cups.domaine.fr.
Commentaires
Andy
Salut !
Merci pour ton message, c’est super agréable d’avoir un tuto clair et précis et surtout succint !
J’ai essayé un paquet de truc, mais le tiens était de loin le plus évident à suivre !
Au plaisir de te lire
Andy
Du coup, j’en profit pour te poser une question !
Quand je supprime un fichier .conf que j’ai créé pour une redirection Proxy, et que je relance apache, j’ai une sortie avec une erreur : en gros, Apache ne peut pas redémarrer, puisque le fichier supprimé est introuvable dans /etc/apache2/sites-enabled.
Je comprends pas trop cette sortie, puisqu’elle ne fait pas appel au fichier que j’avais supprimé (ca remarche quand je recrée le fichier, dans le dossier /sites-enabled, meme vide).
Voilà la sortie :
Output of config test was:
apache2: Syntax error on line 219 of /etc/apache2/apache2.conf: Could not open configuration file /etc/apache2/sites-enabled/lapilli.ovh.conf: No such file or directory
Action ‘configtest’ failed.
Anthony
Il te faut désactiver le site via la commande # a2dissite lapilli.ovh.conf (à tester je suis pas sur PC)
Andy
Super ! Merci pour ta réactivité !
Ca marche au poil !
PS : désolé pour mon message qui s’affiche en gros bloc, on dirait que le « à la ligne » ne marche pas trop sur les commentaires.
Merci encore !
Merci e
Anthony
De rien si je peux aider 😀
Oui c’est mon thème qui merde au niveau des commentaires mais n’ayant pas énormément de commentaires je n’avais pas pris le temps d’améliorer les choses. C’est prévu pour bientôt 😉
Jeremy
Tuto super simple avec des explications claires sur le paramétrage.
C’est exactement ce que je cherchais ! Merci 🙂
Anthony
Merci beaucoup.
Jeremy
Par contre, je ne comprends pas le » = » » dans la balise au début.
A quoi sert-elle ?
Merci !
Anthony
Là tout de suite, aucune idée. Possiblement une erreur de frappe. Je regarde des que j’ai un PC.
Anthony
Le
=""
venait de mon plugin WordPress de coloration syntaxique pour Apache. Je suppose qu’il corrigeait le code en pensant que c’était de l’XML pur.Donc ce n’était pas une erreur de frappe mais une erreur tout de même.
SENE
Bonjour,
je voudrais savoir si le servername « cups.domaine.fr » est le nom du serveur avec lequel on passe les requettes ou bien celui sur lequel on a installé la configuration du reverse proxy
Anthony
Le cups.domaine.fr correspond au serveur sur lequel est installé le reverse proxy.
Sao
Salut !
Merci pour ton tuto !
Je n’ai pas d’erreur sur le apache2 mais je ne parviens pas à accéder à mon NAS depuis l’extérieur (sauf à travers une règle de NAT mais le but est de la virer).
Depuis ma box, je redirige tout le trafic https vers le rproxy et ensuite j’ai ce fichier de config :
Aurais-tu une piste stp ?
Merci par avance,
Sao
Anthony
Bonjour Sao,
Désolé du temps de réponse.
As tu essayé de rajouter la commande SSLProxyEngine on ?
Anthony
Nasser Sankara
SUPER TUTO. TRES PRATIQUE. MERCI
Anthony
Merci
Khaosan
Super tuto,
Ça fonctionne chez moi, merci
Maintenant j’ai besoin de faire un
ServerName cups.domaine.fr/blablabla
ServerAdmin postmaster@domaine.fr
ProxyPass / http://127.0.0.1:6789/
ProxyPassReverse / http://127.0.0.1:6789/
ProxyRequests Off
Et ainsi de suite pour une quinzaine de sites..
Malheureusement, la manipulation ne fonctionne pas :/
James
J’ est le même souci mais pour ses serveurs sa se redirige vers le même port a chaque fois .