# Apache

# Création de Virtual Hosts

## Pré-requis

- Paquet Apache installé : ```
    sudo apt update && sudo apt install apache2
    ```
- Accès root ou sudo
- Nom de domaine pointant vers le serveur (ou modification locale de `/etc/hosts`)

---

## Création du répertoire du site

```
sudo mkdir -p /var/www/mon-site.com/public_html
sudo chown -R $USER:$USER /var/www/mon-site.com/public_html
sudo chmod -R 755 /var/www
```

Exemple de fichier de test :

```
echo "<h1>Bienvenue sur mon-site.com</h1>" > /var/www/mon-site.com/public_html/index.html
```

---

## Création du fichier de configuration

Les fichiers sont stockés dans `/etc/apache2/sites-available/`.

```
sudo nano /etc/apache2/sites-available/mon-site.com.conf
```

Exemple de configuration minimale :

```
<VirtualHost *:80>
    ServerName mon-site.com
    ServerAlias www.mon-site.com
    
    DocumentRoot /var/www/mon-site.com/public_html
    
    ErrorLog ${APACHE_LOG_DIR}/mon-site.com_error.log
    CustomLog ${APACHE_LOG_DIR}/mon-site.com_access.log combined
</VirtualHost>
```

---

## Activation du site

```
sudo a2ensite mon-site.com.conf
sudo systemctl reload apache2
```

---

## Vérification

- Tester la configuration Apache : ```
    sudo apache2ctl configtest
    ```
- Aller sur `http://mon-site.com` ou `http://<IP>`

---

## Désactiver un site

```
sudo a2dissite mon-site.com.conf
sudo systemctl reload apache2
```

---

## Notes utiles

- Répertoire des sites disponibles : `/etc/apache2/sites-available/`
- Répertoire des sites activés : `/etc/apache2/sites-enabled/`
- Fichier par défaut : `/etc/apache2/sites-available/000-default.conf`

# Page d'erreur sur reverse proxy

## Objectif

Lorsque `ProxyPass /` est utilisé, toutes les requêtes sont envoyées au backend.

Pour que les pages d'erreur restent accessibles même si le backend est indisponible, il faut les servir directement depuis Apache.

## Configuration

```apache
# Ne pas proxifier les pages d'erreur
ProxyPass /errors/ !

# Répertoire des fichiers servis localement
DocumentRoot /var/www/exaldc

# Page d'erreur personnalisée
ErrorDocument 503 /errors/503.html
```

## Arborescence

```text
/var/www/exaldc/errors/503.html
```

## À retenir

- `ProxyPass /errors/ !` : exclut `/errors/` du reverse proxy.
- `DocumentRoot` : emplacement des fichiers servis par Apache.
- `ErrorDocument` attend une **URL locale**, pas un chemin de fichier.
- Les pages d'erreur sont ainsi affichées même si le backend est hors service.

## Exemple

Requête :

```
https://monserveur/errors/503.html
```

Fichier servi :

```
/var/www/exaldc/errors/503.html
```