回答:
企業のインストールの1つに、インターネットへの直接アクセスを妨げるフォワードプロキシがあったため、コアに「プロキシパッチ」でパッチを適用しました(この問題は、この問題が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トランク(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のインストールとWebサーバーの構成は完全に同じです(一部の設定では、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と本番ですが、何でもかまいません)。