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ć?

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


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.