Atualizar status atrás de um proxy

9

Estou executando o Drupal em uma intranet atrás de um simples proxy HTTP. Gostaria que as verificações de atualização do módulo e do núcleo funcionassem realmente.

Parece que me lembro que havia um truque básico para fazer isso no Drupal 6, mas não consigo mais encontrar a página.

Alguém sabe como posso fazer isso funcionar?

Frederik
fonte

Respostas:

6

Uma de nossas instalações corporativas tinha um proxy de encaminhamento que impedia o acesso direto à Internet. Acabamos fazendo o patch do núcleo com 'o patch de proxy' (assim chamado assim porque esse problema está aberto desde 2004 - http://drupal.org/ nó / 7881 ).

http://drupal.org/node/7881#comment-4134240 - possui um patch para o drupal 7 http://drupal.org/node/7881#comment-2446280 - possui um patch para o drupal 6

Depois que o patch estiver instalado, você poderá alterar drupal_http_request () para enviar todas as consultas pelo proxy.

Dessa forma, todos os módulos que requerem acesso à Internet funcionarão conforme o esperado, por exemplo, atualizar estátua, agregador, openID etc.

ATUALIZAÇÃO : O patch já foi mesclado no tronco do Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ) e, esperançosamente, será lançado com o Drupal 7.16

wiifm
fonte
Perfeito - que era a mesma página que eu tenho o patch procuração D6 para, mas parece-me ter faltado - graças
Frederik
2

Para referência, esta é a sintaxe que você agora pode usar no Drupal para configurá-lo para executar atrás de um proxy (de 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');
Andy Jackson
fonte
1

Há um módulo para isso

Atualmente, é apenas o Drupal 6, mas deve fornecer um bom ponto de partida.

googletorp
fonte
Importa-se de criar a versão do Drupal 7? (Eu não posso acreditar que alguém ainda está lançando novos sites com Drupal 6.)
iconoclasta
1

Para resolver pbs de teste, estou trabalhando localmente com o nome de domínio de produção real, mas atrás de um proxy, para que a instalação do drupal e a configuração do servidor da web sejam estritamente idênticas (em alguns conf, a escuta de IP pode ser diferente, dependendo do ip de escuta em Produção).

Portanto, eu tinha um proxy respondendo por http: //mydomain.local , fazendo proxy para http: //www.mydomain.tld , mas em um IP local.

Com o nginx, no local vhost conf:

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 o vhost proxied, assim como na produção

server_name  www.mydomain.tld;

E no meu settings.php

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

Com esta conf, eu posso sincronizar todos os arquivos drupal, banco de dados e configuração do servidor entre várias instalações do drupal (desenvolvimento e produção no meu caso, mas pode ser o que você quiser).

dcaillibaud
fonte