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?

È stato utile?

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

C'è un modulo per questo

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a drupal.stackexchange
scroll top