Skip to content
Mathieu Lavigne edited this page Jan 23, 2025 · 13 revisions

Commandes utiles

Vérifier la configuration :

apachectl configtest

Liste des sites :

apachectl -S

Liste des modules :

apachectl -M

Redirection

Redirection d'une URL front vers un serveur back :

<VirtualHost *:80>
    ServerName front.local

    <Location /api/>
        ProxyPass http://localhost/ # "/api/" devient "/" donc les URL front /api/x/y sont traduites en /x/y vers le back
        ProxyPassReverse http://localhost/
        ProxyPreserveHost On # Pour éviter que le proxy n'écrase le header Host
        RequestHeader set Host "back.local" # Correspond au ServerName dans la conf Apache du back, pour qu'Apache retrouve le bon serveur virtuel
    </Location>
</VirtualHost>

Configuration d'un site

Pour écouter les requêtes qui arrive sur le serveur via le port 80. Toutes les commandes suivantes sont à intégrer dans ce contexte de serveur virtuel.

<VirtualHost *:80>
</VirtualHost>

Pour augmenter le niveau des logs du fichier /var/log/apache2/error.log :

    LogLevel debug

Condition sur le header Host de la requête :

    ServerName mon-host.fr

On peut le tester en local avec curl :

curl http://mon-host.fr/ -vvvv --resolve mon-host.fr:80:127.0.0.1

Module proxy et proxy_http

Pour rediriger toutes les requêtes vers un site externe en utilisant http :

    ProxyPass "/"  "https://postman-echo.com/get/"
    ProxyPassReverse "/"  "https://postman-echo.com/get/"

Pour utiliser https, activer le module ssl et ajouter :

    SSLProxyEngine on

doc

Pour présenter un certificat client :

    SSLProxyMachineCertificateFile "client.pair.pem"

Attention à bien vérifier les points suivants :

  • Le fichier contient la concaténation du certificat et de la clé privée
  • La clé est au format PKCS1 RSA
  • La clé n'est pas chiffrée
  • Le fichier ne contient pas de certificat intermédiaires ou racine, ou alors ils ne se trouvent pas juste à côté de la clé

On peut vérifier les logs avec LoLevel ssl:debug au rechargement Apache :

  • AH02207: loaded 1 client certs for SSL proxy si le fichier est accepté
  • loaded 2 intermediate CAs for cert 0: [subject: s'il contient des certificats intermédiaires ou racines
  • AH02206: no client certs found for SSL proxy sinon
  • downstream server wanted client certificate but none are configured sinon et si on tente quand même une requête

doc

Clone this wiki locally