質問

単純なHTTPプロキシの背後にあるイントラネットでDrupalを実行しています。モジュールとコアアップデートチェックが実際に機能するようにしたいと思います。

Drupal 6でこれを行うためのコアハックがあったことを覚えているようですが、もうページが見つかりません。

誰かが私がこれをどのように機能させることができるか知っていますか?

役に立ちましたか?

解決

私たちの企業インストールの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()を変更して、プロキシを介してすべてのクエリを送信できます。

これにより、インターネットへのアクセスを必要とするすべてのモジュールは、予想どおりに機能します。

アップデート: :パッチはすでに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サーバーの構成は厳密に同一になります(一部のCONFでは、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インストール(私の場合は開発と生産が必要ですが、必要なものは何でもあります)を同期できます。

ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top