Apache logo

Un reverse proxy Apache avec mod_proxy

web


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 :

    ServerName nas.domaine.fr
    ServerAdmin admin@domaine.fr
    ProxyPass / https://192.168.0.25
    ProxyPassReverse / https://192.168.0.25
    ProxyRequests Off
    

    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 .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.