Zaktualizuj status za serwerem proxy

9

Używam Drupala w intranecie, który stoi za prostym proxy HTTP. Chciałbym, aby sprawdzanie aktualizacji modułu i rdzenia faktycznie działało.

Wydaje mi się, że pamiętam, że w Drupal 6 był to hack podstawowy, ale nie mogę już znaleźć strony.

Czy ktoś wie, jak mogę to uruchomić?

Frederik
źródło

Odpowiedzi:

6

Jedna z naszych instalacji korporacyjnych miała serwer proxy do przodu, który uniemożliwiał bezpośredni dostęp do Internetu, w efekcie dokonaliśmy łatania rdzenia za pomocą „łatki proxy” (nazwanej w ten sposób, ponieważ ten problem jest otwarty od 2004 r. - http://drupal.org/ węzeł / 7881 ).

http://drupal.org/node/7881#comment-4134240 - ma łatkę na drupal 7 http://drupal.org/node/7881#comment-2446280 - ma łatkę na drupal 6

Po zainstalowaniu łatki będziesz mógł zmienić drupal_http_request (), aby wysyłać wszystkie zapytania przez proxy.

W ten sposób wszystkie moduły wymagające dostępu do Internetu będą działać zgodnie z oczekiwaniami, np. Aktualizacja statuetki, agregator, openID itp

AKTUALIZACJA : Łatka jest już scalona w pniu Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ) i, mam nadzieję, będzie dostępna w Drupal 7.16

wiifm
źródło
Idealnie - to była ta sama strona, dla której dostałem łatkę do proxy D6, ale chyba tęskniłem - dzięki
Frederik
2

Dla porównania, jest to składnia, której możesz teraz użyć w Drupal, aby skonfigurować go do działania za serwerem proxy (z 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
źródło
1

Istnieje moduł do tego

Obecnie jest to tylko Drupal 6, ale powinien zapewnić dobry punkt wyjścia.

googletorp
źródło
Chcesz stworzyć wersję Drupal 7? (Nie mogę uwierzyć, że ktoś wciąż wprowadza nowe strony z Drupalem 6.)
iconoclast
1

W celu rozwiązania pbs pomostowego pracuję lokalnie z rzeczywistą nazwą domeny produkcyjnej, ale za serwerem proxy, dzięki czemu instalacja drupal i konfiguracja serwera WWW są ściśle identyczne (w niektórych przypadkach nasłuch IP może być inny, w zależności od ip nasłuchiwania produkcja).

Tak więc miałem serwer proxy odpowiadający na http: //mojadomena.lokalny , proxy na http: //mojadomena.tld , ale na lokalny adres IP.

Whith nginx, w lokalnym 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;

Dla proxy vhost, tak jak w produkcji

server_name  www.mydomain.tld;

I w moich ustawieniach. Php

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

Za pomocą tej konfiguracji mogę zsynchronizować wszystkie pliki drupal ORAZ konfigurację bazy danych i serwera pomiędzy wieloma instalacjami drupal (programowanie i produkcja w moim przypadku, ale może być cokolwiek chcesz).

dcaillibaud
źródło