Вопрос

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

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

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

Это было полезно?

Решение

В одной из наших корпоративных установок был прямой прокси-сервер, который препятствовал прямому доступу к Интернету, в итоге мы исправили ядро с помощью "прокси-патча" (названного так потому, что эта проблема была открыта с 2004 года - http://drupal.org/node/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 trunk ( https://drupal.org/comment/6425278#comment-6425278 ), и, надеюсь, выйдет с Drupal 7.16

Другие советы

Для справки, это синтаксис, который вы теперь можете использовать в 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');

Есть модуль для этого

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

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

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

With nginx, в местном конфейте Vhost:

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;

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

server_name  www.mydomain.tld;

И в моих настройках.php

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top