67 lines
2.3 KiB
Markdown
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
|
|
``` |