2016-02-26 3 views
8

私は、ホストが異なるコードブランチをテストするためのDockerコンテナの束を実行し、コンテナ内の実行中のWebサーバーにアクセスしたいというセットアップを構築しています。Apache:URLに指定されたUnixソケットへのプロキシー

すべての容器はhostで実行されます。各コンテナは、ホスト上のUNIXソケットを介してウェブアプリケーションを提供する。 /var/sockets/<socket_name>

は、私が欲しいのは、URLに基​​づいてコンテナへのプロキシにhost上のApache用ですので、とき<socket_name>にI GET https://<host>.com/<socket_name>/my_url、Apacheのプロキシ要求:GET https://<host>.com/my_url。つまり、URLのソケット名を認識し、URLを書き換えて、そのソケットに送信します。

これは可能ですか?私はまだドキュメントを読んでいますが、ヒントを見つけることはできません。

+0

Apacheは、2.4.x以降のUNIXソケットへのプロキシをサポートしています。どのくらい正確に、まあ...あなたの質問は、Googleで答えを探していた。 :-) – peterh

答えて

3

ネット上のさまざまなドキュメントに基づいて、mod_proxymod_rewriteの2つの意味があります。つまり、URLはソケット名を抽出するために処理され、その部分がなくても書き換えられ、新しい(短縮された)URLとソケット名に基づいてプロキシが実行されます。私が関心の2つのパラメータを抽出するもの(.*)式に私の提案を接地

RewriteEngine On 
RewriteRule  /(.*)/(.*) http://%{HTTP_HOST}/$2 [P] 
ProxyPass  /   unix:/var/sockets/$1.sock|http://%{HTTP_HOST}/ 
ProxyPassReverse/   unix:/var/sockets/$1.sock|http://%{HTTP_HOST}/ 

:ここ

は次のようにそれが見ることができる方法です。次に、URLを書き換えて、Pフラグを使用して、結果がプロキシに渡されることを示します。後で2つの同じProxyPassProxyPassReverseを指定し、Unixソケットパス、パイプ|セパレータとホストベースアドレスを指定します。

私はこれがうまくいくか、少なくとも私たちが探しているもののスケッチを与えることを望みます。

+0

私はこれを試してみる時間を見つけることができますが表示されます。その間、私は単純にURLをリダイレクトする小さなpython webappを作成しました – Eldamir

+0

OK、Python webappも適切なソリューションかもしれません。 –

関連する問題