Files
abonnel-www/297a69aa-5f67-4c02-8e02-454c2700ee7a/index.md
T

2.3 KiB

Apache 2 : configurer un reverse-proxy HTTP pour un sous-domaine

Voici mes notes pour configurer un reverse-proxy avec Apache 2, qui expose un sous-domaine HTTP et relaie les requêtes vers un serveur d'origine identifié par son adresse IP.

http://extra.perdu.com  <==[ reverse proxy ]==>  http://103.224.182.253

Prérequis

  • Apache 2 installé avec les modules proxy et proxy_http activés :
    sudo a2enmod proxy proxy_http
    
  • Le port 80 ouvert sur la machine qui héberge le reverse-proxy.
  • Un enregistrement DNS pointant le sous-domaine (ici extra.perdu.com) vers l'IP du reverse-proxy.

Configuration du VirtualHost

Chaque site est décrit par un fichier .conf placé dans /etc/apache2/sites-available/. Dans cet exemple, on configure le site extra.perdu.com pour qu'il relaie le trafic vers 103.224.182.253.

Créer le fichier /etc/apache2/sites-available/100-com.perdu.extra.conf :

<VirtualHost *:80>

    ServerName extra.perdu.com

    # On ne proxifie pas les requêtes Let's Encrypt :
    # elles doivent être servies localement.
    ProxyPass /.well-known/acme-challenge !
    Alias /.well-known/acme-challenge /var/www/html/.well-known/acme-challenge

    <Directory "/var/www/html/.well-known/acme-challenge">
        Options None
        AllowOverride None
        Require all granted
        AddDefaultCharset off
    </Directory>

    ProxyPreserveHost On
    ProxyPass        "/" "http://103.224.182.253/"
    ProxyPassReverse "/" "http://103.224.182.253/"

</VirtualHost>

Pourquoi exclure /.well-known/acme-challenge ?

L'exclusion via ProxyPass /.well-known/acme-challenge ! prépare l'ajout futur d'un certificat SSL avec Let's Encrypt. Lors de la validation du domaine, Let's Encrypt attend une réponse HTTP 200 sur ce chemin : si la requête est relayée vers le serveur d'origine, la validation peut échouer.

Cette directive peut rester en place même si vous ne prévoyez pas d'utiliser Let's Encrypt dans l'immédiat — elle est sans effet tant que le répertoire n'est pas sollicité.

Activer le site

Activer la configuration avec a2ensite :

sudo a2ensite 100-com.perdu.extra.conf

Vérifier que la syntaxe est correcte, puis recharger Apache sans interrompre le service :

sudo apache2ctl configtest
sudo systemctl reload apache2