2017-10-24 9 views
0

いくつかのサービスをテストするために使用するサーバーがあります。これは、基本的に、devsがいくつかのテストを実行するためにいくつかのコンテナを実行できるサーバーです。1つの仮想ホストに対して複数のプロキシリバース

私がやっていることは、いくつかのコンテナにいくつかのURLパターンを逆にすることです。

<VirtualHost *:80> 
     ServerName dev.server.com 

     RewriteEngine On 

     RewriteRule (.*) https://%{HTTP_HOST}$1 [R=301,L] 
</VirtualHost> 

<VirtualHost *:443> 
     ServerName dev.server.com 

     <--- certificates and log configs ---> 

     SetEnv proxy-nokeepalive 1 
     ProxyRequests  On 
     ProxyPreserveHost On 
     RewriteEngine  On 

     ProxyPass /appOne http://localhost:9999/ 
     ProxyPassReverse /appOne http://localhost:9999/ 

     ProxyPass /appTwo http://localhost:9000/ 
     ProxyPassReverse /appTwo http://localhost:9000/ 

     ProxyPass/http://localhost:3000/ 
     ProxyPassReverse/http://localhost:3000/ 
</VirtualHost> 

しかし、私はhttps://dev.server.com/appOneにアクセスするとき、それは代わりにポート9999に配備1のポート3000に配備アプリにアクセス:

例えば、これは私が今持っているものです。

私は以前はApacheを設定していないので、私はすべての概念を理解するのに苦労しています。これは可能ですか?はいの場合は、私のミスはどこですか?

答えて

0

あなたがしたいことは確かに可能です。実際、あなたが掲示したものと実質的に同一の構成を使用して、私があなたが説明した問題を再現することはできません。

hereという完全な例をdocker-composeアプリケーションとして入れました。それは4個のコンテナを起動する:

  • つのApacheインスタンスは、さまざまなポート

でリッスンバックエンドとしてmod_proxy設定を演技

  • 三Apacheのインスタンスが何と同じですはProxyPassディレクティブとフロントエンドとして動作しますあなたは次のように表示しました:

    ProxyPass /appOne http://localhost:9999/ 
    ProxyPassReverse /appOne http://localhost:9999/ 
    
    ProxyPass /appTwo http://localhost:9000/ 
    ProxyPassReverse /appTwo http://localhost:9000/ 
    
    ProxyPass/http://localhost:3000/ 
    ProxyPassReverse/http://localhost:3000/ 
    

    唯一の違いは、私はSSLコンテキストを設定していないことです私のフロントエンドサーバ。あなたの質問に表示されている2つの例の他に、コンフィギュレーションに他のVirtualHostブロック(特に、ポート443で設定された他の仮想ホスト)がありますか?

  • 関連する問題