Yahoo! JAPAN ヘルプ
<< pound 設定 のページ検索結果にもどる
このページでは http://www10.ocn.ne.jp/~sayu/other/pound.html のキャッシュを表示しています。
検索対象となった右のキーワードがハイライト表示されています: pound 設定
キャッシュとは、提携する検索エンジンが、検索結果表示用の索引を作る際に各ページの内容を保存したものです。
->  キャッシュとは?
元のページは変更されている可能性があります。現在のページ内容はこちらから確認できます。

※HTMLバージョンとして表示する際、レイアウトが崩れたり、文字が読めなくなる場合があります。ご了承ください。
Yahoo! JAPANはページ内のコンテンツとの関連はありません。

リバースプロキシ & ロードバランサ − Pound


新しい情報が SYの技術情報備忘録リバースプロキシ & ロードバランサ − Pound にあります。


最近、Webブラウザから設定できる機器やソフトが増えてきて、便利にはなっているんだけど、sshやtelnetで接続してCLI(Command Line Interface)でも設定できるようになっていないとやはり不便ですね。
ある機器の設定を変更したいのですが、その機器はサーバの裏側に接続されており、こちら側から直接アクセスできません。おまけに、Webブラウザからの設定しかサポートしていないし、アクセス制限もかけてあります。また、サーバにはWebブラウザなんて入れていないし、入れるつもりもありません(そもそも、X Windowも入れてないし)。
そこで、リモートで機器の設定を行うために、サーバでリバースプロキシ(reverse-proxy)を動かす事にしました。何か良いソフトはないかと探していたら、Pound を見つけました(SquidApache でもできるみたいですが)。

1.Pound とは

リバースプロキシ & ロードバランサ(reverse-proxy and load-balancer)で、

などの機能があります。
サイズも小さく、設定も簡単です。

2.インストール(Solaris)

  1. Pound の入手
    http://www.apsis.ch/pound/ より入手する(現在、Version 0.11)。
    ※事前に OpenSSL をインストールしておく必要がありますが、ここでは割愛。

  2. アーカイブを解凍(以降、解凍先ディレクトリを$POUNDとする)
    $ tar zxf Pound-0.11.tgz
  3. ソースの変更(必要に応じて)
    HTTPSを使用する場合、デフォルトではクライアント証明書が要求される。
    クライアント証明書を使用しない場合、クライアント証明書を要求しないように変更する。
    $ cd $POUND
    $ diff http.c.orig http.c
    391c391
    <         SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE, verify_cert);
    ---
    >         SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, verify_cert);
  4. コンパイル & インストール
    $ cd $POUND
    $ ./configure -with-ssl=/usr/local/ssl    <- OpenSSLのインストール先
    $ make
    # make install           <- 当然、rootですよ

3.サーバ証明書作成(HTTPSを使用する場合)

Pound は、パスワード無しの秘密鍵とサーバ証明書を同じファイルに入れておく必要があります。証明書発行機関からのグローバルな証明書の入手も考えられますが、ここではローカル証明書を使用(作成)します。

  1. まず、秘密鍵の作成
    $ openssl genrsa -rand /var/log/syslog -des3 -out server.key 1024
  2. 次に、秘密鍵からパスワードの削除
    $ openssl rsa -in server.key -out server-np.key
  3. 証明書作成
    $ openssl req -new -key server-np.key -x509 -out server.pem
  4. パスワード無し秘密鍵ファイルをアペンドしてPound用のサーバ証明書作成
    $ cat server-np.key >> server.pem

以上で証明書の作成完了です。適当な場所に証明書を置いて下さい。

4.設定

設定ファイル /usr/local/etc/pound/pound.cfg を作成します。
詳細の設定情報は、マニュアルを参照して下さい。

  1. 単純なリバースプロキシの例
    1.2.3.4 へのHTTPリクエストを 192.168.0.10 に転送
    ListenHTTP 1.2.3.4,80
    
    UrlGroup ".*"
    BackEnd 192.168.0.10,80,1
    EndGroup
  2. SSLラッパの例
    1.2.3.4 へのHTTPSリクエストをHTTPで 192.168.0.10 に転送
    ListenHTTPS 1.2.3.4,443 /usr/local/etc/pound/server.pem
    
    UrlGroup ".*"
    BackEnd 192.168.0.10,80,1
    EndGroup
  3. ロードバランサの例
    1.2.3.4 へのHTTPSリクエストをHTTPで3台のサーバに振り分け、192.168.0.30 の優先順位を高くする
    ListenHTTPS 1.2.3.4,443 /usr/local/etc/pound/server.pem
    
    UrlGroup ".*"
    BackEnd 192.168.0.10,80,1
    BackEnd 192.168.0.20,80,1
    BackEnd 192.168.0.30,80,5
    EndGroup
  4. バーチャルホストの例
    1.2.3.4 へのHTTPリクエストを条件によって振り分け
    ・画像ファイル(*.jpg, *.gif)へのリクエストは、192.168.0.10 に
    ・バーチャルホスト www.server0.jp へのリクエストは、192.168.0.10 と 192.168.0.20 に
    ・バーチャルホスト www.server1.jp へのリクエストは、192.168.0.10:50080 と 192.168.0.20:50081 に
    ・その他のリクエストは、192.168.0.30 と 192.168.0.40 に
    それぞれ振り分ける。
    ListenHTTP 1.2.3.4,80
    
    UrlGroup ".*.(jpg|gif)"
    BackEnd 192.168.0.10,80,1
    EndGroup
    
    UrlGroup ".*"
    HeadRequire Host ".*www.server0.jp.*"
    BackEnd 192.168.0.10,80,1
    BackEnd 192.168.0.20,80,1
    EndGroup
    
    UrlGroup ".*"
    HeadRequire Host ".*www.server1.jp.*"
    BackEnd 192.168.0.10,50080,1
    BackEnd 192.168.0.20,50081,1
    EndGroup
    
    UrlGroup ".*"
    BackEnd 192.168.0.30,80,1
    BackEnd 192.168.0.40,80,1
    EndGroup

5.Squid でのリバースプロキシ

おまけに、Squid でのリバースプロキシの設定例です。多機能なだけに設定項目も沢山あるので、関連する部分のみです。

  1. squid.conf設定
    redirect_program /usr/local/squid/etc/redirector.pl
    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on
  2. squid.conf で指定したリダイレクト・プログラム /usr/local/squid/etc/redirector.pl の例
    1.2.3.4 へのHTTPリクエストを 192.168.0.10 に転送
    #!/usr/local/bin/perl
    $|=1;
    while (<>) {
            s@http://1\.2\.3\.4@http://192.168.0.10@;
            print;
    }

最終更新日:2002年10月25日(金) (OCN, GeoCities1, GeoCities2)