Skip to main content

Configuration Apache en tant que Reverse Proxy + HTTPS

Voici la configuration pour configurer apache en tant que Reverse Proxy

Cette page page montre un exemple de configuration de reverse proxy apache

Configuration

192.168.1.200 → Serveur Web principal + Reverse Proxy, marchine accessible depuis l'exterieur
192.168.1.201 → Serveur Nextcloud, serveur où le flux de nextcloud.franopit.fr sera redirigé, non accessible sans le proxy depuis l'exterieur

Activation module mod_proxy sur Apache:

a2enmod mod_proxy_http

Creation d'un fichier Zone pour l'hote nextcloud.franopit.fr sur le serveur Apache Proxy:
A mettre dans /etc/apache2/sites-avalable

<VirtualHost *:80>
        # NDD (FQDN)
        ServerName nextcloud.franopit.fr
        # Redirection traffic http vers https
        RewriteEngine on
        RewriteCond %{HTTPS} !on
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
        ServerName nextcloud.franopit.fr
        #Proxy vers serveur nextcloud en https
        ProxyPreserveHost on
        ProxyRequests on
        SSLProxyEngine on
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
        SSLProxyVerify none
        ProxyPass / https://192.168.10.201/
        ProxyPassReverse / https://192.168.10.201/
        # Certificats SSL let'sencrypt pour la configuration SSL https de l'hote
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/nextcloud.franopit.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.franopit.fr/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
SSLProtocol all -SSLv2 -SSLv3
</VirtualHost>

Detail des options:

  • SSLEngineOn, SSLCertificateFile, SSLCertificateKeyFile : paramétrage du SSL, avec le certificat et la clé
  • SSLProxyEngine : activation du mode Proxy en SSL
  • SSLProxyCheckPeerCN et SSLProxyCheckPeerName : permet de ne pas vérifier le CN et le nom du serveur distant
  • SSLProxyVerify : pas de vérification du serveur distant
  • SSLProxyMachineCertificateFile : concaténation de la clé et du certificat de la machine (pas nécessaire si on désactive les vérifications)
  • ProxyPass et ProxyPassReverse : il s'agit du paramétrage "standard" du mode reverse proxy
  • ProxyPreserverHost On : garde le nom DNS du reverse proxy (sinon on récupère l'adresse IP du serveur cible)

Redémarrage service apache pour appliquer les modifications:

systemctl restart apache2

Docs

Apache : reverse proxy https
IT-CONNECT - Apache Mise en place d’un Reverse Proxy Apache avec mod_proxy