Howto : Drupal derrière un proxy avec authentification

Publié le 19 août 2009 par Pydubreucq

Si vous utilisez Drupal derrière un proxy sans ou avec authentification, comme par exemple pour un intranet.

Vous allez être confronté à un gros problème d’utilisation. L’accès à l’interface d’administration est très lent, car il fait des recherches pour savoir les mises à jours disponible, du socle drupal et de ses modules…

Voici comment contourner le problème :

Ajoutez dans le fichier settings.php :

$conf = array(’update_fetch_url’ => ‘http://localhost:8888/release-history/’ );

Puis autorisez sur votre serveur Apache le mod_proxy (debian-like) :

# ln -s /etc/apache2/mods-available/proxy.* /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/

# /etc/init.d/apache restart

Ensuite autorisez le mod_proxy pour le localhost : (Afin d’éviter ce message d’erreur : client denied by server configuration: proxy)

# vi /etc/apache2/mods-enabled/proxy.conf

<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>
ProxyVia On
</IfModule>

Puis ajoutez ces quelques règles au niveau d’Apache :

ProxyPass /release-history/ http://updates.drupal.org/release-history/
ProxyPassReverse /release-history/ http://updates.drupal.org/release-history/
ProxyRemoteMatch ^.*/release-history/.*$ http://localhost:4444/

Et enfin il faut utiliser cntlm afin de gérer l’authentification avec le proxy qui vous empêche de faire les mises à jour Drupal. CNTLM est un proxy d’authentification comme NTLMaps

CNTLM est disponible sous Ubuntu, un simple « aptitude install cntlm » et le tour est joué.

Il faut maintenant le configurer, pour cela :

# vi /etc/cntlm.conf

Voici les paramètres à changer :

Username   votre-user
Domain   votre-domaine
Password   votre-mot-de-passe   # Use hashes instead (-H)
#Workstation   netbios_hostname   # Should be auto-guessed

Proxy   votre-proxy:8080
#Proxy   10.217.112.42:8080

#
# This is the port number where Cntlm will listen (Ceci est le port d’écoute de CNTLM)
#
Listen   4444

On retrouve d’ailleurs ce port d’écoute dans les règles de Proxy ci-dessus.

Il vous suffit de redémarrer CNTLM et ça devrait fonctionner.

Si cela ne fonctionne pas, n’hésitez pas à revenir vers moi

Merci à Stillcut du forum drupalfr.org pour m’avoir orienté vers un post du forum officiel de Drupal qui m’a permis de trouver la solution

client denied by server configuration: proxy:
client denied by server configuration: proxy: