2012-05-10 17 views
0

私はWebアプリケーションの依存関係の一部をキャッシュするためにVarnish-cacheを使用したいと考えていますが、私は社内のプロキシ設定の背後に止まっています。 Varnish-cacheに、プロキシ経由で他のサービスへのHTTP要求を行うように指示する方法はありますか?プロキシの背後でvarnish-cacheを使用する方法

感謝

サイモン

答えて

0

は、限り、あなたはプロキシとHTTPを話すことができるよう、あなたがやりたいことができます。

セットアップ例:

[back-end A]   [back-end B] 
    |      | 
    ---[corporate proxy]--- 
       | 
      [Varnish] 

変更80からプロキシポート(例えば8080)にデフォルトのポート...

backend corp_proxy { 
    .host = "proxy.localnet"; 
    .port = "8080"; 
} 
... 
sub vcl_recv { 
    ... 
    /* check if back-end A or B and use proxy as backend */ 
    if (req.http.host == "backend-a.example.com" || req.http.host == "backend-b.example.com") { 
     set req.backend = corp_proxy; 
     set req.http.X-Proxy-Pass = 'mypass'; 
    } 
    ... 
} 

あなたも(要求にカスタムヘッダーを設定することができますいくつかの静的なキーなど)。

+0

大変感謝!それはまさに私が探していたものです。 –

+0

この設定は3.xで動作していますか? –

+0

はい、設定例はバージョン3.xで動作します。 –

0

ワニス4の場合、これは機能しません。ネットワークトレースを少し行うと、varnish v4が相対req.urlを実行しているように見えます。プロキシが絶対req.urlを必要としています 私はスプリットブレインDNSの世界にいるので、バックエンドは同じドメイン名ですフロントエンドのユーザーは(別の方法でresovles)を参照してください。したがって、req.url変数でreq.http.hostを使用して絶対URLを作成します。

sub vcl_recv { 
    # Setting backend hint 
    set req.backend_hint = varnish_backend; 
    if (req.url !~ "mydomain.com") { 
     set req.url ="http://" + req.http.host + req.url; 
} 
関連する問題