Aggiorna lo stato dietro un proxy


9

Sto eseguendo Drupal in una intranet che si trova dietro un semplice proxy HTTP. Vorrei che i controlli del modulo e dei core update funzionassero davvero.

Mi sembra di ricordare che su Drupal 6 ci fosse un hack fondamentale per farlo, ma non riesco più a trovare la pagina.

Qualcuno sa come posso farlo funzionare?

Risposte:


6

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

http://drupal.org/node/7881#comment-4134240 - ha una patch per drupal 7 http://drupal.org/node/7881#comment-2446280 - 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. Aggiornamento statua, aggregatore, openID ecc

AGGIORNAMENTO : la patch è già unita nel trunk Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ) e, si spera, uscirà con Drupal 7.16


Perfetto - quella era la stessa pagina per cui ho ottenuto la patch proxy D6, ma mi sembra che mi sia sfuggita - grazie
Frederik

2

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');


1

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 l'installazione drupal e la configurazione del server Web siano strettamente identiche (in 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 su 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 i file drupal E la configurazione del database E del server tra molta installazione drupal (sviluppo e produzione nel mio caso, ma potrebbe essere quello che vuoi).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.