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