リバースプロキシPound

1名無しさん@お腹いっぱい。2006/12/30(土) 18:54:40
速い、安定、簡単と三拍子そろったHTTPリバースプロキシ、
Poundについて語るスレであります。

配布元
http://www.apsis.ch/pound

紹介記事
http://php.y-110.net/wiki/index.php?%A5%ED%A1%BC%A5%C9%A5%D0%A5%E9%A5%F3%A5%B5%A1%A7Pound

Poundの機能に不足を感じる方はこちらへ(Squidスレ)
http://pc10.2ch.net/test/read.cgi/unix/1138826120/l50

34名無しさん@お腹いっぱい。2008/04/22(火) 01:27:00
mod_rpaf はどーよ?

35名無しさん@お腹いっぱい。2008/04/22(火) 11:23:29
アクセス制限とは違うんだけど、バックエンド側の
ログをみても分けわかめになるのはどうすればいいの?

36名無しさん@お腹いっぱい。2008/04/22(火) 12:08:32
バックエンドがapacheなら、環境変数でもログってみるとかさ。
>>33 のモジュールだってX-Forwardから取得してるんだし。

37名無しさん@お腹いっぱい。2008/04/22(火) 20:12:25
いや、話がややこしくなるから書かなかったんだけど
Poundを通してMediaWiki(Wikipediaのシステム)を使うと
MediaWikiに記録されるIPアドレスが全部PoundのIPアドレスになってしまうということだったのよ

ApacheのログにアクセスしたIPアドレスを記録させるには
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
こんな風にするらしいよ

38名無しさん@お腹いっぱい。2008/04/22(火) 20:43:00

39名無しさん@お腹いっぱい。2008/04/23(水) 08:34:11
バックエンドに lighttpd 使ってるから mod_rpaf とか聞いても
ショボーンだったけど,mod_extforward があるのを知った.
シャキーン

40名無しさん@お腹いっぱい。2008/04/23(水) 17:09:54
X-Forwarded-Forヘッダ解釈で値を変更するってややリスキーだな。
apacheのソース見るとログは単純に文字列で、アクセス制限はソケットの構造体を見てる。
気になるのは3点。
・ログの%aや%hは上書きされるのか?
・IPアドレスベース、ホスト名ベースのアクセス制限は機能するのか?
・リバースプロキシにアクセスする際にX-Forwarded-Forを付けるとどうなるか?

mod_extract_forwarded2とかmod_rpafのソース読めばいいんだけどね。

41名無しさん@お腹いっぱい。2008/06/20(金) 17:59:01
バックエンドにSSLを使っているサービスがあり、PoundでSSLからSSLへブリッジしたいのですが、
バックエンドのSSLはオレオレ証明書なのです。
Poundのパブリッシャ側というか、クライアント側というか、送信側は、オレオレ証明書のサービスに
対してリクエストを転送できないようですが、解決法はあるのでしょうか?

だれも、こんな使い方している人はいない?

42名無しさん@お腹いっぱい。2008/06/20(金) 23:01:07
Pound側のOpenSSLのRootCAにオレオレのCA証明書を追加して
オレオレCA秘密鍵でバックエンド側のオレオレ証明書にサインすればいんじゃね?

43名無しさん@お腹いっぱい。2008/06/23(月) 09:31:32
はぁ、どうもありがとうございます。
OpenSSLの仕組みに詳しくないため、かなり試行錯誤をしないと実現できない感じですが、
その方向性で試してみます。
バックエンドはIISなのです。
どうも有り難うございました。

44422008/06/23(月) 21:55:08
すまん,オレオレ言い過ぎた.まとめると

1) PoundサーバでCAの設定をする
2) PoundサーバでCAの証明書をRootCA(FreeBSDだと/etc/ssl以下にある.他は知らぬ)に追加
3) IISサーバでreqを作る
4) 3)のreqにPoundサーバで設定したCAの秘密鍵で署名する
5) IISで4)で署名された証明書を使うように設定する

って感じ!


45名無しさん@お腹いっぱい。2008/06/25(水) 20:58:31
>>44
どうも有り難うございます。師匠と呼ばせて下さい。

CentOSなのですけれど、2)はFreeBSDだと可能なのでしょうか?
Linuxだと、2のやり方が分からなかったのですが。

PoundのMLを読んでいたら、stunnel使えば出来るって一言書かれていただけでした。
ということで、仕方なくstunnelを試してみました。

IISサーバにstunnelも入れてしまいましたが、上手く動きました。
経由アプリがさらに増えて、ちょっと性能的に気になりますが、
とりあえずこれでしのぐことにします。
どうも有り難うございました。

46422008/06/26(木) 01:06:55
>>45
> CentOSなのですけれど、2)はFreeBSDだと可能なのでしょうか?
FreeBSDってか,OpenSSLなら可能です.OS関係ナシ
CentOS上のOpenSSLがどこにRootCA置いてるかは知らぬ.
つーか,rpm -ql openssl すれば一瞬で分かるんじゃないの?

IISサーバにstunnelって時点で何したいのか意味不明になったので
師匠の話は固辞させていただきますね

47名無しさん@お腹いっぱい。2008/06/26(木) 21:08:29
申し訳ありません、最初からまとめてみます。通常なら下記ですよね。
IIS <-(HTTP)- Pound <-(HTTPS)- 外部

でも、IIS上のアプリがSLLを使用しないと動作しないのです。
オレオレ証明書で十分なのですが、とにかくSSL必須のアプリなのです。
そのため、PoundでSSLブリッジという表現になりました。
IIS <-(HTTPS)- Pound <-(HTTPS)- 外部

最終的には、今、下記の構成で暫定対処しています。
IIS <-(HTTPS)- stunnel <-(HTTP)- Pound <-(HTTPS)- 外部

Poundだけで構成した下記の場合には、IISが呼び出せない問題が生じました。
IIS <-(HTTPS)- Pound

上記の場合、Poundはクライアントと見なせますよね。
ということは、Windowsでいうところの信頼されたルート証明書機関に
証明書を追加すればよいと思ったのですが、
OpenSSLのprivateディレクトリに証明書を置いても接続できないのです。

調べたところ、そもそもLinuxではSSLのクライアント動作に
各アプリケーション共通のルート証明書参照という仕組みがない。
それは各アプリ毎に実装される部分である。
ということでした。そこでstunnelということになったのです。
分かりにくい説明ですみません。
証明書ストアという概念は、確かにJavaだとJava用ディレクトリ決まってますよね。
OpenSSLでは、本当にライブラリ使用アプリ側で違うものなのでしょうか‥‥

48422008/06/30(月) 01:51:08
例えばVerisignの署名があればPoundでブリッジできるじゃないですか.
既にポインタは示したつもりだけど,技術的にVerisignの署名ならOKでオレオレCAの署名は
ダメなんてことあるわけないと思わない?

これ以上具体的に例示しろってことなら金くれ.
2万/hで売ってますんでよろしく.

49名無しさん@お腹いっぱい。2008/06/30(月) 21:38:40
> 例えばVerisignの署名があればPoundでブリッジできるじゃないですか.

出来ない

50名無しさん@お腹いっぱい。2008/07/01(火) 17:17:28
え?うちのイントラのVeriサイン入りサーバを外から叩くのに運用中だけど。

51名無しさん@お腹いっぱい。2008/07/02(水) 14:18:26
Poundの場合、backendにhttpsで繋ぐ機能はないと思うが。

52名無しさん@お腹いっぱい。2008/07/02(水) 15:12:05
つまり、ズル向けしてなきゃだめってことだな。

53名無しさん@お腹いっぱい。2008/07/03(木) 15:15:48
イントラにベリサインってお金持ちですな。

54名無しさん@お腹いっぱい。2008/09/12(金) 10:39:31
SSLラッパとして使ってるが、ページによってエラー302で接続できなくなる。
302ってセッショントラッキングの問題ですか?

55名無しさん@お腹いっぱい。2008/10/20(月) 18:51:41
これってバックエンドに投げたリクエストのタイムアウトが設定できるんだけど、
正常なレスポンスが返ってこなかったときに別のサーバにリトライするように
設定できますか?

56名無しさん@お腹いっぱい。2008/10/21(火) 01:53:34
>>55
レスポンスが例えば500番台だったら別のバックエンドへ接続するというようなこと?
接続できなかったら別のバックエンド、もしくはエマージェンシーバックエンドへ、とはできるようだけど。

57名無しさん@お腹いっぱい。2008/10/29(水) 20:09:31
Poundを使って接続すると400番を返されて表示されない
blogのページとかで正常に見えなくなる事が多いんだけど
マニュアルも見てみたが初心者なんで何が足りないのか理解できんかった

正味ラウンドロビン機能だけできればいいんだがどーにかなりますか?

58名無しさん@お腹いっぱい。2008/10/30(木) 00:35:58
>>57
blogなんかだとセッションがあるんじゃないの?
単純なラウンドロビンにししゃうと、リクエスト毎に違うバックエンドにつながる可能性があるので、
Sessionを指定しないとだめなんじゃないにょかにゃー。
ttp://www.apsis.ch/pound/index_html の SESSIONS

59名無しさん@お腹いっぱい。2008/10/30(木) 21:16:31
情報足りなくてスマソ
まずはPoundからの接続検証だけ出来ればいいから違うバックエンドに繋がろうといいんだ

vhostで複数のwebを構築してるサーバのサイトに接続したいんだ
Redirectでは当然できるが
BackEndのAddressからだとデフォルトのドキュメントルートに繋がってしまう
違いって振り分けが有る無しだけじゃないのか?

poundの動きが理解できない・・・

60名無しさん@お腹いっぱい。2008/10/30(木) 22:53:08
tcpdump とかでリクエスト確認しる Host: ヘッダ送ってないならデフォルトに繋がる罠

61名無しさん@お腹いっぱい。2008/10/30(木) 23:44:09
>>59
「Redirectでは当然できるが」のRedirectって具体的には何のどういうリダイレクト?
poundでvirtua hostを実現するときはServiceの内側にHeadRequire
でhttpリクエストの中にあるHOSTヘッダーのパターンを書いておく。
そのパターンにマッチすれば、同じServiceのバックエンドからどれかを選んで接続(中継)する。
「BackEndのAddressから」というのもよく分からないので、もちっと具体的に書いてよ。

62名無しさん@お腹いっぱい。2008/10/31(金) 11:12:40
>>60
情報あり、確認してみる

>>61
poundでvirtua hostを実現したいのではなくて
poundでapacheのvirtua hostに接続したいのです。

「BackEndのAddressから」っていうのは下記参照

Service
  BackEnd
    Address www.xxx.xxx
    ・・・(Portとか略)
  BackEnd
    Address 192.xx.xx.xx
    ・・・(Portとか略)
  End
End

RedirectはBackEnd項目と同レベルで記述できるpoundの内部の設定の事です


63名無しさん@お腹いっぱい。2008/11/01(土) 00:55:25
>>62
Redirect は pound がbackendに中継するのではなく、(HTTPの)redirectを返すから
それで接続できるときはブラウザがbackendに直接接続できている、ということでしょう。

BackEndの場合
(1)ブラウザがpoundに接続しリクエストを送る
(2)poundがバックエンドに接続しリクエストを送る
(3)バックエンドからpoundにレスポンスが返る
(4)poundからブラウザにレスポンスが返る

Redirectの場合
(1)ブラウザがpoundに接続しリクエストを送る
(2)poundがレスポンス(XXXへRedirectしろよ)を返す
(3)ブラウザはXXXへ接続しリクエストを送る
(4)XXXからブラウザにレスポンスが返る

という動作になっているはずです。poundのログを見てみてはどうでしょう。

64名無しさん@お腹いっぱい。2008/11/04(火) 16:50:19
恥ずかしながら質問してた事は解決したので報告しとく
HeadRequire にちゃんと記述したらvirtua hostに接続されました
結局は俺の勘違いでドツボにハマッテ混乱してただけなんだな・・・

>>61
申し訳ない!!
書いてた通りだ、勘違いしてました。すんませんでした!

>>63
さんくす、読解力の低い俺でも気づくことが出来たよprz


mod_rewriteを使用しているサイトにはまだ400番を返されてしまうので
どーにかならないか調べてみる
俺程度がなにか理解できれば、また書き込んでみるよ

65名無しさん@お腹いっぱい。2009/03/25(水) 03:15:14
centOs4で試してるんですが、接続できません。
iptablesも切ってるんですが、接続自体出来てないようです。

telnetで接続すると
接続中: 192.168.11.100...ホストへ接続できませんでした。 ポート番号 80: 接続に失
敗しました
とでます。

66名無しさん@お腹いっぱい。2009/03/25(水) 14:27:30
poundは実行されていますか?
ps ax
で見たときに pound はありますか?

67名無しさん@お腹いっぱい。2009/06/24(水) 14:37:06
ubuntu9.04にpoundをsynapticから入れて
起動しようとしたんだけど、failになって起動せず。
設定は/etc/default/poundのフラグを1にしただけです。
特にエラーメッセージがでないので調べようがなくて
困ってます

68名無しさん@お腹いっぱい。2009/06/24(水) 14:37:48
ubuntu9.04にpoundをsynapticから入れて
起動しようとしたんだけど、failになって起動せず。
設定は/etc/default/poundのフラグを1にしただけです。
特にエラーメッセージがでないので調べようがなくて
困ってます

69にゃあ2009/07/11(土) 02:31:46
いまだ!69ゲットォォォォ!!! オマンコベロベロナメダーチンチンナメテー
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    (´´
                  ∧∧       (´⌒(´
           ↑⊂(゚ー゚*)≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ

70名無しさん@お腹いっぱい。2009/07/21(火) 12:47:33
>>68
syslog 見た?
pound.cfg の設定をしないとだめだと思うよ

71名無しさん@お腹いっぱい。2009/07/25(土) 15:23:41
Backendサーバがpoundに返したRedirectをブラウザに中継できないか?

72名無しさん@お腹いっぱい。2009/09/20(日) 12:27:33
枯れ過ぎ

73名無しさん@お腹いっぱい。2009/09/27(日) 17:47:30
graceful restartマダー?

74名無しさん@お腹いっぱい。2009/10/21(水) 21:24:56

75名無しさん@お腹いっぱい。2009/10/21(水) 21:59:43
お、こんなスレあったのか。
全レイヤー対応のロードバランサー総合スレが欲しいな。

76名無しさん@お腹いっぱい。2010/03/20(土) 08:01:44
Varnish 使っている人いないの?

77名無しさん@お腹いっぱい。2010/03/20(土) 08:11:57
>>75
たてて

78名無しさん@お腹いっぱい。2010/07/16(金) 16:47:17
時間帯や曜日によって、あるいはスケジュールに従って
バックエンドを切り替える事はできるのでしょうか?

79名無しさん@お腹いっぱい。2012/02/02(木) 22:18:34.09
この、俺が立てたスレまだ有るのか。。。
今更だが2.6リリースおめ

80名無しさん@お腹いっぱい。2012/03/11(日) 15:00:41.77
安定してないだろ
常にエラー吐いてるイメージなんだけど

使ったことない

82名無しさん@お腹いっぱい。2014/11/22(土) 21:38:11.59
PoundとLVSどっちがいいの

83名無しさん@お腹いっぱい。2017/12/29(金) 07:44:34.66
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

MIF8CXXDKU

84名無しさん@お腹いっぱい。2018/05/22(火) 06:07:41.79
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

ZDPJY

新着レスの表示
レスを投稿する