web-dev-qa-db-ja.com

プロキシの背後にあるステータスを更新する

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

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

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

9
Frederik

企業のインストールの1つに、インターネットへの直接アクセスを妨げるフォワードプロキシがありました。コアに「プロキシパッチ」をパッチすることになりました(この問題は、この問題が2004年以来オープンしているため、このように呼ばれました- http:// drupal.org/node/7881 )。

http://drupal.org/node/7881#comment-413424 -drupal 7用のパッチがあります http://drupal.org/ node/7881#comment-244628 -drupal 6のパッチがあります

パッチがインストールされると、プロキシを介してすべてのクエリを送信するようにdrupal_http_request()を変更できるようになります。

これにより、インターネットへのアクセスを必要とするすべてのモジュールが期待どおりに機能します。スタチュー、アグリゲーター、openIDなどの更新

[〜#〜] update [〜#〜]:パッチはすでにDrupal 7トランクにマージされています(- https://drupal.org/comment/6425278#comment-6425278 )、そしてうまくいけばDrupal 7.16

6
wiifm

参考までに、これは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');
2
Andy Jackson

ステージング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と本番環境)の間で同期できますが、あなたが欲しい)。

1
dcaillibaud

そのためのモジュールがあります

現在はDrupal 6のみですが、良い出発点を提供するはずです。

1
googletorp