Відповіді:
Один з наших корпоративних установок мав прямий проксі-сервер, який перешкоджав прямому доступу до Інтернету, і в кінцевому підсумку ядро виправлене "проксі-патчем" (таким чином назвали цей шлях, оскільки ця проблема відкрита з 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
Для довідки, це синтаксис, який ви тепер можете використовувати в 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');
Для вирішення сценаріїв Pbs я працюю локально з реальним доменним іменем виробництва, але за проксі-сервером, щоб установка drupal та конфігурація веб-сервера були абсолютно однаковими (за деякими конфіденціями, прослуховування IP може бути різним, залежно від ip прослуховування в виробництво).
Отже, у мене з'явився проксі-сервер, який відповідав на http: //mydomain.local , наближаючись до http: //www.mydomain.tld , але на локальному IP- адресі .
Whith 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 (у моєму випадку розробник та виробництво, але може бути все, що завгодно).