it-swarm-es.com

Actualizar estado detrás de un proxy

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

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

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

9
Frederik

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' (así llamado así porque este problema ha estado abierto desde 2004 - http: // drupal.org/node/7881 ).

http://drupal.org/node/7881#comment-413424 - tiene un parche para drupal 7 http://drupal.org/ node/7881 # comment-244628 - 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 esperaba, p. actualizar estatua, agregador, openID, etc.

[~ # ~] actualización [~ # ~] : El parche ya está fusionado en Drupal 7 troncal (- https://drupal.org/comment/6425278#comment-6425278 ), y espero que salga con Drupal 7.16

6
wiifm

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

Para resolver pbs de preparación, estoy trabajando localmente con el nombre de dominio de producción real, pero detrás de un proxy, de modo que drupal y la configuración del servidor web son 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 respondiendo a http: //mydomain.local , proxy a http: // www .midominio.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 drupal archivos Y la base de datos Y la configuración del servidor entre una gran cantidad de drupal instalación (desarrollo y producción en mi caso, pero podría ser lo que sea usted quiere).

1
dcaillibaud

Hay un módulo para eso

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

1
googletorp