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:80/release-history/’
);
Le port 80 est le port surlequel mon apache tourne, vous pouvez bien sur en mettre un autre 😉
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-guessedProxy 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:
23 décembre 2009
Bonjour,
Merci pour votre tuto.
J’ai juste un problème concernant les règles au niveau d’apache. J’ai supposé qu’il fallait les ajouter au niveau de la conf de Apache soit dans /etc/apache2/apache2.conf mais cela ne fonctionne pas.
Si vous pouviez me donner des pistes.
Merci.
23 décembre 2009
Bonjour @Kiolul,
Si mes souvenirs sont bons, je l’avais mis dans le vhost par défaut.
As-tu bien activé le mod proxy ?
Tu utilises quelle version d’apache ?
Merci de tes retours et bonne journée
CiaO ++
23 décembre 2009
Merci pour ta réponse rapide.
J’utilise Apache2. Concernant mod_proxy, je l’ai activer en utilisant ton tuto:
# ln -s /etc/apache2/mods-available/proxy.* /etc/apache2/mods-enabled/
# ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/
Est-ce que celà suffit…
Bonne journée.
23 décembre 2009
Rebonjour,
J’imagine qu’après avoir fait les liens symboliques tu as bien redémarré Apache ?
CiaO ++
23 décembre 2009
Rebonjour, Oui bien sur.
Par contre je pense que le souci vient seulement du fichier de config ou mettre les règles de apache.
Tu me parles de vhost, dans quel fichier tester?
Merci.
++
23 décembre 2009
De mémoire, j’ai placé les règles de proxy :
ProxyPass /release-history/ http://updates.drupal.org/release-history/
ProxyPassReverse /release-history/ http://updates.drupal.org/release-history/
ProxyRemoteMatch ^.*/release-history/.*$ http://localhost:4444/
Dans le fichier :
/etc/apache2/site-available/default
Les logs d’Apache te disent quoi ?
Si tu regardes dans le répertoire en faisant un :
ls -al /etc/apache2/mods-enabled/
Les liens symboliques sont-ils bien créés ?
Désolé, je pose des questions bêtes, mais c’est jamais évident à distance 😉
Merci d’avance 😉
CiaO ++
30 décembre 2009
Salut et désolé pour la réponse tardive (fêtes de fin d’années oblige ^^).
J’ai checker les différents points (qui ne sont pas basiques mais bon de rappeler) et te confirme que les liens symboliques sont OK et qu’il n’y a pas d’erreur dans le fichier de log. Le problème se situe vraiment je pense au niveau des règles à ajouter.
Je ne connais pas vraiment la config de apache mais quand je fais des essais d’ajout, j’ai rapidement des erreurs.
Pour info le fichier à cette tête:
NameVirtualHost *
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /doc/ « /usr/share/doc/ »
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
Si tu te souviens de la syntaxe pour ajouter les règles plus en détail…
Merci encore pour ton aide.
9 mars 2010
Salut,
Je me suis remis sur le sujet aujourd’hui et j’ai trouvé une autre solution qui me semble plus simple à mettre en place. Voici le lien sur le forum de Drupal:
Ajout dans le menu du paramétrage Proxy
Une fois « patché », pensez à vider le cache pour que le menu soit mis à jour.
Merci pour ton aide.
9 mars 2010
Bien le bonjour,
Merci @Kiolul pour l’info
Je ne suis pas trop adepte des patchs car après mise à jour il faut le réappliquer, mais c’est toujours bon de le savoir 😉
Bonne journée
9 mars 2010
Effectivement, il faut penser à le ré-appliquer après MAJ.
Pour info il tourne sur la version 6.16 donc je devrais être tranquille un petit moment.
Bonne journée aussi.
7 juillet 2010
Ajouter
$conf[‘update_fetch_url’] = ‘http://localhost:80/release-history/’;
dans settings.php me semble plus propre non ?
Ceci mis à part merci pour les infos ça marche nickel chez moi 😛
26 mai 2016
Non valable pour Drupal 7 🙁