it-swarm.it

Aggiorna lo stato dietro un proxy

Sto eseguendo Drupal in una intranet che si trova dietro un semplice proxy HTTP. Vorrei che i controlli del modulo e degli aggiornamenti di base funzionassero davvero.

Mi sembra di ricordare che c'è stato un hack di base per farlo su Drupal 6, ma non riesco più a trovare la pagina.

Qualcuno sa come posso farlo funzionare?

9
Frederik

Una delle nostre installazioni aziendali aveva un proxy in avanti che impediva l'accesso diretto a Internet, abbiamo finito per patchare il core con "patch proxy" (così chiamato in quanto questo problema è stato aperto dal 2004 - http: // drupal.org/node/7881 ).

http://drupal.org/node/7881#comment-413424 - ha una patch per drupal 7 http://drupal.org/ node/7881 # comment-244628 - ha una patch per drupal 6

Una volta installata la patch, sarai in grado di modificare drupal_http_request () per inviare tutte le query tramite il proxy.

In questo modo tutti i moduli che richiedono l'accesso a Internet funzioneranno come previsto, ad es. aggiorna statua, aggregatore, openID ecc

[~ # ~] update [~ # ~] : la patch è già unita in Drupal 7 trunk (- https://drupal.org/comment/6425278#comment-6425278 ), e si spera che uscirà con Drupal 7.16

6
wiifm

Per riferimento, questa è la sintassi che ora puoi usare in Drupal per configurarlo per l'esecuzione dietro un proxy (da 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

Per risolvere i pbs di gestione temporanea, sto lavorando localmente con il vero nome di dominio di produzione, ma dietro un proxy, in modo che drupal e configurazione del server web siano strettamente identici (su alcuni conf l'ascolto IP potrebbe essere diverso, a seconda dell'ip di ascolto in produzione).

Quindi, avevo un proxy che rispondeva a http: //mydomain.local , eseguendo il proxy a http: // www .mydomain.tld , ma su un IP locale.

Con nginx, nella configurazione del 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;

Per il vhost proxy, proprio come nella produzione

server_name  www.mydomain.tld;

E nelle mie impostazioni.php

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

Con questo conf, posso sincronizzare tutti drupal E la configurazione del database E del server tra un sacco di drupal (sviluppo e produzione nel mio caso, ma potrebbe essere qualunque cosa tu vuoi).

1
dcaillibaud

C'è un modulo per quello

Al momento è solo Drupal 6, ma dovrebbe fornire un buon punto di partenza.

1
googletorp