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?
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
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');
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).
Actualmente es solo Drupal 6, pero debería proporcionar un buen punto de partida.