Cette page donne des informations sur la configuration d'un site derrière un proxy.
Les proxies inverses
Adresse à utiliser derrière les noms DNS publics des sites web (CNAME) : prod-proxy-vip.vpc02.auf.org.
L'adresse IP flottante correspondante (137.74.32.196) est gérée avec un keepalived entre prod-proxy01 et prod-proxy02.
Nom DNS public |
IP publique |
IP privée |
Nom DNS privé |
prod-proxy01.vpc02.auf.org |
137.74.32.194 |
10.242.1.194 |
prod-proxy01.vpc02.auf |
prod-proxy02.vpc02.auf.org |
137.74.32.195 |
10.242.1.195 |
prod-proxy02.vpc02.auf |
Configuration derrière les proxies inverses
Config' de Symfony derrière un proxy
Ajouter la ligne suivante juste après $request = Request::createFromGlobals(); dans web/app.php :
Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));
Référence : http://symfony.com/doc/current/deployment/proxies.html
Config' de Drupal derrière un proxy
Ajouter les lignes suivantes dans settings.php :
$conf['reverse_proxy'] = TRUE; $conf['reverse_proxy_addresses'] = array('10.242.1.194', '10.242.1.195');
Référence : https://www.drupal.org/node/425990
Config' VirtualHost Apache derrière un proxy
Exemple pour le site transfer.auf.org, fichier /etc/apache2/sites-available/transfer.auf.org.conf sur la machine prod-transfer2-backend.vpc02.auf :
<VirtualHost *:80> ServerName http://transfer.auf.org ServerAdmin transfer@auf.org DocumentRoot /home/auf-transfer/public_html/web/ ErrorLog ${APACHE_LOG_DIR}/transfer.auf.org_error.log CustomLog ${APACHE_LOG_DIR}/transfer.auf.org_access.log combined LogLevel warn Redirect / https://transfer.auf.org/ </VirtualHost> <VirtualHost *:443> ServerName https://transfer.auf.org ServerAdmin transfer@auf.org DocumentRoot /home/auf-transfer/public_html/web/ ErrorLog ${APACHE_LOG_DIR}/transfer.auf.org-ssl_error.log CustomLog ${APACHE_LOG_DIR}/transfer.auf.org-ssl_access.log combined LogLevel warn <Location /> AuthType "Mellon" #MellonEnable "auth" MellonEnable "info" #MellonUser "mail" # les méta-données MellonDefaultLoginPath "/" MellonOrganizationName "AuF Transfer 2" MellonOrganizationDisplayName "fr" "AuF Dispositif Transfer 2" MellonOrganizationURL "http://www.auf.org" MellonSPPrivateKeyFile /etc/ssl/private/saml-auf-transfer-key.pem MellonSPCertFile /etc/ssl/certs/saml-auf-transfer-cert.pem MellonIdPMetadataFile /etc/ssl/saml-id.auf.org-metadata.xml # les conditions d'accès MellonUser "mail" MellonCond "mail" "^[^@]*@auf\.org$" [REG] MellonSetEnvNoPrefix "transfer-mellon-name" "displayName" MellonSetEnvNoPrefix "transfer-mellon-mail" "mail" MellonSetEnvNoPrefix "transfer-mellon-sn" "sn" MellonSetEnvNoPrefix "transfer-mellon-gn" "gn" </Location> <Location /mellon/> AuthType "Mellon" MellonEnable "info" </Location> <Location /login> AuthType "Mellon" MellonEnable "info" </Location> <Location /api> AuthType "Mellon" MellonEnable "info" </Location> </VirtualHost>
Config' des logs Apache 2.4 derrière un proxy
Pour que les logs locaux rapportent bien les adresses IP originelles des accès, il faut activer le module remoteip dans Apache :
sudo a2enmod remoteip
Créer ensuite un fichier /etc/apache2/conf-enabled/local-remoteip.conf avec le contenu suivant :
<IfModule remoteip_module> RemoteIPInternalProxy 127.0.0.1 ::1 10.242.1.194 10.242.1.195 #RemoteIPTrustedProxy 10.242.1.194 RemoteIPHeader X-Forwarded-For #RemoteIPHeader X-Real-IP LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%a %l %u %t \"%r\" %>s %O" common </IfModule>
Et enfin relancer Apache :
sudo apache2ctl configtest && sudo apache2ctl graceful
Config' de mod_auth_mellon derrière un proxy
Ajouter cette ligne à la configuration de mod_auth_mellon pour éviter la vérification de l'adresse IP du client (qui est ici le proxy) par rapport à celle indiquée dans l'assertion SAML :
MellonSubjectConfirmationDataAddressCheck Off