Aggiorna stato dietro un proxy
Domanda
Io corro Drupal in una rete Intranet che si trova dietro un semplice proxy HTTP. Mi piacerebbe per il modulo e fondamentali controlli degli aggiornamenti a realtà di lavoro.
Mi sembra di ricordare c'era un hack di base per fare questo su Drupal 6, ma non riesco a trovare più la pagina.
Qualcuno sa come posso ottenere questo lavoro?
Soluzione
Una delle nostre installazioni aziendali avevano un proxy di inoltro che impediva l'accesso diretto a Internet, abbiamo finito patch core con 'la patch procura' (così chiamato in questo modo perché questo problema è stato aperto dal 2004 - http://drupal.org/node/7881 ).
http://drupal.org/node/7881#comment-4134240 - ha un patch per drupal 7 http://drupal.org/node/7881#comment-2446280 - ha una patch per Drupal 6
Una volta installata la patch, allora si sarà in grado di alterare drupal_http_request () per inviare tutte le query attraverso il proxy.
In questo modo tutti i moduli che richiedono l'accesso a Internet funzionerà come previsto, ad esempio aggiornamento statua, aggregatore, OpenID etc
Aggiorna : La patch è già fusa in Drupal 7 tronco ( https : //drupal.org/comment/6425278#comment-6425278 ), e si spera sarà fuori con Drupal 7.16
Altri suggerimenti
Per riferimento, questa è la sintassi ora è possibile utilizzare in Drupal per configurarlo per correre 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');
E 'attualmente solo Drupal 6, ma dovrebbe fornire un buon punto di partenza.
Per risolvere messa in scena PBS, sto lavorando a livello locale con il nome di dominio produzione vera e propria, ma dietro un proxy, in modo che l'installazione di Drupal e configurazione del server web del tutto identiche (su alcuni conf l'ascolto IP potrebbe essere diverso, a seconda del ascoltando ip in produzione).
Così, ho avuto un proxy di rispondere per http: //mydomain.local , il proxy per http:. //www.mydomain.tld , ma su un IP locale
Whith nginx, in conf 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 Proxied, proprio come nella produzione
server_name www.mydomain.tld;
E nella mia settings.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 di database e la configurazione del server tra un sacco di installazione di Drupal (dev e la produzione nel mio caso, ma potrebbe essere quello che vuoi).