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` : {{{
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/
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
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"
AuthType "Mellon"
MellonEnable "info"
AuthType "Mellon"
MellonEnable "info"
AuthType "Mellon"
MellonEnable "info"
}}}
=== 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 : {{{
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
}}}
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
}}}