Aktualisieren Sie den Status hinter einem Proxy


9

Ich führe Drupal in einem Intranet aus, das sich hinter einem einfachen HTTP-Proxy befindet. Ich möchte, dass die Modul- und Kernupdateprüfungen tatsächlich funktionieren.

Ich scheine mich zu erinnern, dass es auf Drupal 6 einen Kern-Hack gab, aber ich kann die Seite nicht mehr finden.

Weiß jemand, wie ich das zum Laufen bringen kann?

Antworten:


6

Eine unserer Unternehmensinstallationen hatte einen Forward-Proxy, der den direkten Zugriff auf das Internet verhinderte. Am Ende haben wir den Core mit dem "Proxy-Patch" gepatcht (so genannt, weil dieses Problem seit 2004 offen ist - http://drupal.org/). Knoten / 7881 ).

http://drupal.org/node/7881#comment-4134240 - hat einen Patch für Drupal 7 http://drupal.org/node/7881#comment-2446280 - hat einen Patch für Drupal 6

Sobald der Patch installiert ist, können Sie drupal_http_request () ändern, um alle Abfragen über den Proxy zu senden.

Auf diese Weise funktionieren alle Module, die Zugang zum Internet benötigen, wie erwartet, z. B. Update Statue, Aggregator, OpenID usw.

UPDATE : Der Patch ist bereits in Drupal 7 Trunk ( https://drupal.org/comment/6425278#comment-6425278 ) zusammengeführt und wird hoffentlich mit Drupal 7.16 veröffentlicht


Perfekt - das war die gleiche Seite, für die ich den D6-Proxy-Patch bekommen habe, aber ich habe ihn anscheinend verpasst - danke
Frederik

2

Als Referenz ist dies die Syntax, die Sie jetzt in Drupal verwenden können, um es so zu konfigurieren, dass es hinter einem Proxy ausgeführt wird (von 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

Zum Auflösen von Staging-Pbs arbeite ich lokal mit dem tatsächlichen Namen der Produktionsdomäne, jedoch hinter einem Proxy, sodass die Drupal-Installation und die Webserverkonfiguration streng identisch sind (bei einigen Konfigurationen kann die IP-Überwachung je nach IP-Adresse unterschiedlich sein Produktion).

Ich hatte also einen Proxy, der auf http: //mydomain.local antwortete und auf http: //www.mydomain.tld vertrat , jedoch auf einer lokalen IP.

Mit Nginx, in lokaler 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;

Für den Proxy-Host, genau wie in der Produktion

server_name  www.mydomain.tld;

Und in meiner settings.php

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

Mit dieser Konfiguration kann ich alle Drupal-Dateien UND die Datenbank- UND Serverkonfiguration zwischen vielen Drupal-Installationen synchronisieren (in meinem Fall Entwickler und Produktion, könnte aber alles sein, was Sie wollen).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.