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

67 lines
2.3 KiB
Markdown

# 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
```