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 }}}