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

This commit is contained in:
Cédrix
2026-05-17 20:31:44 +02:00
parent 8370311f86
commit 8975a4b317
6 changed files with 110 additions and 106 deletions
@@ -1,16 +0,0 @@
{
"title": "Apache 2 : configurer un reverse-proxy HTTP pour un sous-domaine",
"_updated_at": "2026-05-17 18:31:39",
"slug": "http-proxy-apache2",
"published": true,
"published_at": "2023-02-09 16:12",
"category": "Informatique",
"tags": {
"tags": [
"HTTP",
"Apache"
]
},
"seo_title": "",
"seo_description": ""
}
@@ -1,67 +0,0 @@
# 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
```
+30 -18
View File
@@ -1,27 +1,33 @@
# Apache 2 : reverse-proxy : configurer un site http avec sous-domaine en www
# Apache 2 : configurer un reverse-proxy HTTP pour un sous-domaine
Voici mes prises de notes pour configurer un reverse-proxy avec Apache 2.
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.
```
Configurer Apache 2
http:*www.abonnel.fr <==[reverse proxy ]==> 51.23.41.1
http://extra.perdu.com <==[ reverse proxy ]==> http://103.224.182.253
```
## Pré requis
La configuration du site Internet s'effectue dans un fichier de configuration.
## Prérequis
- Il accepte une connexion sur le port http 80.
- Il redirige vers un hébergement par http avec adresse IP
- 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 Apache 2
On configure un site web à partir d'un fichier `conf` qui contient des directives. Dans notre exemple de fichier `conf` configure le site Internet `extra.perdu.com`.
## 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` :
Le fichier à créer est `/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
@@ -33,23 +39,29 @@ Le fichier à créer est `/etc/apache2/sites-available/100.com.perdu.extra.conf`
</Directory>
ProxyPreserveHost On
ProxyPass "/" "http:*103.224.182.253/"
ProxyPass "/" "http://103.224.182.253/"
ProxyPassReverse "/" "http://103.224.182.253/"
</VirtualHost>
```
Afin de prévenir notre paramétrage futur en https, la directive `RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*` permet de ne pas rediriger les appels pour Let's Encrypt (http/301). En effet, Let's encrypt n'accepte que des status http/200 lorsque nous mettrons en œuvre l'ajout d'un certificat SSL.
### Pourquoi exclure `/.well-known/acme-challenge` ?
Cette directive peut-être laissée active, même si vous ne prévoyez pas d'ajouter une certificat SSL avec Let's Encrypt.
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` :
## Activer la configuration du site
On active la configuration du site en utilisant le binaire `a2ensite`
```
sudo a2ensite 100-com.perdu.extra.conf
```
Et si tout se passe bien, on recharge la configuration d'Apache 2 sans avoir besoin de redémarre le service :
Vérifier que la syntaxe est correcte, puis recharger Apache sans interrompre le service :
```
sudo service apache2 reload
sudo apache2ctl configtest
sudo systemctl reload apache2
```
+19 -5
View File
@@ -1,18 +1,32 @@
{
"uuid": "297a69aa-5f67-4c02-8e02-454c2700ee7a",
"slug": "http-proxy-apache2",
"title": "Apache 2 : reverse-proxy : configurer un site http avec sous-domaine en www",
"title": "Apache 2 : configurer un reverse-proxy HTTP pour un sous-domaine",
"author": "cedric@abonnel.fr",
"published": true,
"published_at": "2023-02-09 16:12:18",
"featured": false,
"published_at": "2023-02-09 16:12",
"created_at": "2023-02-09 16:12:18",
"updated_at": "2023-02-09 16:12:18",
"revisions": [],
"updated_at": "2026-05-17 18:31:44",
"revisions": [
{
"n": 1,
"date": "2026-05-17 18:31:44",
"comment": "Titre modifié, tags modifiés, contenu modifié",
"title": "Apache 2 : reverse-proxy : configurer un site http avec sous-domaine en www"
}
],
"cover": "",
"files_meta": [],
"external_links": [],
"seo_title": "",
"seo_description": "",
"og_image": "",
"category": "Informatique"
"category": "Informatique",
"tags": {
"tags": [
"HTTP",
"Apache"
]
}
}
@@ -0,0 +1,55 @@
# Apache 2 : reverse-proxy : configurer un site http avec sous-domaine en www
Voici mes prises de notes pour configurer un reverse-proxy avec Apache 2.
```
Configurer Apache 2
http:*www.abonnel.fr <==[reverse proxy ]==> 51.23.41.1
```
## Pré requis
La configuration du site Internet s'effectue dans un fichier de configuration.
- Il accepte une connexion sur le port http 80.
- Il redirige vers un hébergement par http avec adresse IP
## Configuration Apache 2
On configure un site web à partir d'un fichier `conf` qui contient des directives. Dans notre exemple de fichier `conf` configure le site Internet `extra.perdu.com`.
Le fichier à créer est `/etc/apache2/sites-available/100.com.perdu.extra.conf` :
```
<VirtualHost *:80>
ServerName extra.perdu.com
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>
```
Afin de prévenir notre paramétrage futur en https, la directive `RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*` permet de ne pas rediriger les appels pour Let's Encrypt (http/301). En effet, Let's encrypt n'accepte que des status http/200 lorsque nous mettrons en œuvre l'ajout d'un certificat SSL.
Cette directive peut-être laissée active, même si vous ne prévoyez pas d'ajouter une certificat SSL avec Let's Encrypt.
## Activer la configuration du site
On active la configuration du site en utilisant le binaire `a2ensite`
```
sudo a2ensite 100-com.perdu.extra.conf
```
Et si tout se passe bien, on recharge la configuration d'Apache 2 sans avoir besoin de redémarre le service :
```
sudo service apache2 reload
```
+6
View File
@@ -3156,3 +3156,9 @@
{"ts":"2026-05-17 18:31:37","url":"/config/.env.production","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:38","url":"/src/.env.local","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:39","url":"/config/heroku.php","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:40","url":"/root/.aws/config","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:40","url":"/app/config/aws.yml","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:41","url":"/th","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:41","url":"/ \"/website/config.env\",","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:43","url":"/ \"/.git/config\",","ref":"","ua":"curl/8.7.1"}
{"ts":"2026-05-17 18:31:43","url":"/ \"/.env.mailer_url\",","ref":"","ua":"curl/8.7.1"}