Обновить статус за прокси


9

Я использую Drupal во внутренней сети, которая находится за простым HTTP-прокси. Я бы хотел, чтобы проверки модулей и обновлений ядра действительно работали.

Кажется, я помню, что в Drupal 6 был основной взлом, но я больше не могу найти страницу.

Кто-нибудь знает, как я могу заставить это работать?

Ответы:


6

В одной из наших корпоративных инсталляций был прямой прокси-сервер, который препятствовал прямому доступу к Интернету. В итоге мы установили исправление ядра с помощью «прокси-патча» (названного таким образом, поскольку эта проблема была открыта с 2004 года - http://drupal.org/ узел / 7881 ).

http://drupal.org/node/7881#comment-4134240 - патч для drupal 7 http://drupal.org/node/7881#comment-2446280 - патч для drupal 6

После установки патча вы сможете изменить drupal_http_request () для отправки всех запросов через прокси.

Таким образом, все модули, которым требуется доступ к Интернету, будут работать должным образом, например, обновить статую, агрегатор, openID и т. Д.

ОБНОВЛЕНИЕ : патч уже объединен в ствол Drupal 7 ( https://drupal.org/comment/6425278#comment-6425278 ) и, надеюсь, выйдет с Drupal 7.16


Отлично - это была та же страница, для которой я получил патч для прокси D6, но я, кажется, пропустил его - спасибо
Frederik

2

Для справки: вот синтаксис, который вы теперь можете использовать в Drupal для настройки его работы за прокси (из 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

Для этого есть модуль

В настоящее время это только Drupal 6, но он должен стать хорошей отправной точкой.


Вы хотите создать версию Drupal 7? (Я не могу поверить, что кто-то все еще выпускает новые сайты с Drupal 6.)
iconoclast

1

Для разрешения промежуточных pbs я работаю локально с реальным рабочим доменным именем, но за прокси-сервером, так что установка drupal и конфигурация веб-сервера строго идентичны (на некоторых конфах прослушивание IP может отличаться в зависимости от ip прослушивания в производство).

Итак, у меня был прокси, отвечающий за http: //mydomain.local , с прокси на http: //www.mydomain.tld , но на локальном IP.

С помощью nginx, в локальной 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;

Для прокси Vhost, как в производстве

server_name  www.mydomain.tld;

И в моем settings.php

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

С помощью этого conf я могу синхронизировать все файлы drupal, а также базу данных и конфигурацию сервера между многими установками drupal (в моем случае это dev и production, но может быть как угодно).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.