Mettre à jour l'état derrière un proxy


9

J'exécute Drupal dans un intranet qui se trouve derrière un simple proxy HTTP. J'aimerais que les vérifications de mise à jour du module et du noyau fonctionnent réellement.

Je semble me souvenir qu'il y avait un hack de base pour le faire sur Drupal 6, mais je ne trouve plus la page.

Est-ce que quelqu'un sait comment je peux faire fonctionner cela?

Réponses:


6

L'une de nos installations d'entreprise avait un proxy direct qui empêchait l'accès direct à Internet, nous avons fini par corriger le noyau avec «le correctif proxy» (ainsi nommé parce que ce problème est ouvert depuis 2004 - http://drupal.org/ noeud / 7881 ).

http://drupal.org/node/7881#comment-4134240 - a un patch pour drupal 7 http://drupal.org/node/7881#comment-2446280 - a un patch pour drupal 6

Une fois le patch installé, vous pourrez alors modifier drupal_http_request () pour envoyer toutes les requêtes via le proxy.

De cette façon, tous les modules qui nécessitent un accès à Internet fonctionneront comme prévu, par exemple, mise à jour de statue, agrégateur, openID, etc.

MISE À JOUR : Le correctif est déjà fusionné dans le tronc Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ) et, espérons-le, sera disponible avec Drupal 7.16


Parfait - c'était la même page pour laquelle j'ai obtenu le patch proxy D6, mais il me semble l'avoir manqué - merci
Frederik

2

Pour référence, voici la syntaxe que vous pouvez maintenant utiliser dans Drupal pour le configurer pour qu'il s'exécute derrière un proxy (à partir de default.settings.php / 7 ):

/**
 * External access proxy settings:
 *
 * If your site must access the Internet via a web proxy then you can enter
 * the proxy settings here. Currently only basic authentication is supported
 * by using the username and password variables. The proxy_user_agent variable
 * can be set to NULL for proxies that require no User-Agent header or to a
 * non-empty string for proxies that limit requests to a specific agent. The
 * proxy_exceptions variable is an array of host names to be accessed directly,
 * not via proxy.
 */
# $conf['proxy_server'] = '';
# $conf['proxy_port'] = 8080;
# $conf['proxy_username'] = '';
# $conf['proxy_password'] = '';
# $conf['proxy_user_agent'] = '';
# $conf['proxy_exceptions'] = array('127.0.0.1', 'localhost');

1

Il y a un module pour ça

Ce n'est actuellement que Drupal 6, mais devrait fournir un bon point de départ.


Vous souhaitez créer la version Drupal 7? (Je n'arrive pas à croire que quelqu'un continue de déployer de nouveaux sites avec Drupal 6.)
iconoclaste

1

Pour résoudre les pbs intermédiaires, je travaille localement avec le vrai nom de domaine de production, mais derrière un proxy, de sorte que l'installation drupal et la configuration du serveur web soient strictement identiques (sur certaines conf, l'écoute IP pourrait être différente, en fonction de l'ip d'écoute dans production).

Donc, j'avais un proxy qui répondait à http: //mydomain.local , procurant un proxy à http: //www.mydomain.tld , mais sur une IP locale.

Avec nginx, dans la conf vhost locale:

server_name  mydomain.local;
set $proxied_server_name www.mydomain.tld;
set $proxied_cookie_domain mydomain.tld;

# then generic proxy conf
proxy_set_header Host              $proxied_server_name;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

# My param added for drupal absolute url construction
proxy_set_header X-Proxy-Host      $host;               

# For headers rewriting (Location or Refresh)
proxy_redirect   http://$proxied_server_name/ http://$host/;

proxy_cookie_domain $proxied_server_name $host;  
# and for drupal auth, with cookies without sub-domain
proxy_cookie_domain $proxied_cookie_domain $host;

Pour le vhost mandaté, comme en production

server_name  www.mydomain.tld;

Et dans mes settings.php

if (isset($_SERVER['HTTP_X_PROXY_HOST'])) {
  $base_url = 'http://' .$_SERVER['HTTP_X_PROXY_HOST'];
}

Avec cette conf, je peux synchroniser tous les fichiers drupal ET la configuration de la base de données ET du serveur entre beaucoup d'installation drupal (développement et production dans mon cas mais pourrait être ce que vous voulez).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.