# 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` : ``` 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 Options None AllowOverride None Require all granted AddDefaultCharset off ProxyPreserveHost On ProxyPass "/" "http://103.224.182.253/" ProxyPassReverse "/" "http://103.224.182.253/" ``` ### 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 ```