Actualizar estado detrás de un proxy

9

Estoy ejecutando Drupal en una intranet que está detrás de un simple proxy HTTP. Me gustaría que el módulo y las comprobaciones de actualizaciones principales funcionen realmente.

Creo recordar que hubo un truco central para hacer esto en Drupal 6, pero ya no puedo encontrar la página.

¿Alguien sabe cómo puedo hacer que esto funcione?

Frederik
fuente

Respuestas:

6

Una de nuestras instalaciones corporativas tenía un proxy directo que impedía el acceso directo a Internet, terminamos parcheando el núcleo con 'el parche proxy' (llamado así de esta manera porque este problema ha estado abierto desde 2004 - http://drupal.org/ nodo / 7881 ).

http://drupal.org/node/7881#comment-4134240 - tiene un parche para drupal 7 http://drupal.org/node/7881#comment-2446280 - tiene un parche para drupal 6

Una vez que se instala el parche, podrá modificar drupal_http_request () para enviar todas las consultas a través del proxy.

De esta forma, todos los módulos que requieren acceso a Internet funcionarán como se espera, por ejemplo, actualizar estatua, agregador, openID, etc.

ACTUALIZACIÓN : El parche ya está fusionado en el tronco de Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ), y con suerte saldrá con Drupal 7.16

wiifm
fuente
Perfecto, esa fue la misma página para la que obtuve el parche proxy D6, pero parece que me lo perdí. Gracias
Frederik
2

Como referencia, esta es la sintaxis que ahora puede usar en Drupal para configurarlo para que se ejecute detrás de un proxy (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');
Andy Jackson
fuente
1

Hay un módulo para eso

Actualmente es solo Drupal 6, pero debería proporcionar un buen punto de partida.

googletorp
fuente
¿Te importa crear la versión de Drupal 7? (No puedo creer que alguien todavía esté implementando nuevos sitios con Drupal 6.)
iconoclasta
1

Para resolver pbs de preparación, estoy trabajando localmente con el nombre de dominio de producción real, pero detrás de un proxy, para que la instalación de drupal y la configuración del servidor web sean estrictamente idénticas (en algunos conf la escucha de IP podría ser diferente, dependiendo de la ip de escucha en producción).

Entonces, tenía un proxy que respondía para http: //mydomain.local , proxy para http: //www.mydomain.tld , pero en una IP local.

Con nginx, en vhost conf local:

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;

Para el servidor proxy, al igual que en producción

server_name  www.mydomain.tld;

Y en mi settings.php

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

Con este conf, puedo sincronizar todos los archivos drupal Y la configuración de la base de datos Y del servidor entre una gran cantidad de instalación de drupal (desarrollo y producción en mi caso, pero podría ser lo que quieras).

dcaillibaud
fuente