2016-06-22 13 views
3

複数の製品を扱うJavaアプリケーションがあります。それは製品に基づいて行動の変化です。AWS ELBのアプリケーションサーバーにサブドメインを渡す

製品は、URLのサブドメインで定義されます。これらのURLは、それぞれが均質EC2アプリケーションの私達の艦隊に要求を転送ルート53を介して個別のAWS弾性ロードバランサにマップされている

https://<product1>.example.com 
https://<product2>.example.com 
... 

サーバー。

したがって、https://<product1>.example.comにはELBがあり、https://<product2>.example.comは異なるELBを持っています。これらのELBSは両方とも、同じJavaアプリケーションを使用して同じサーバーセットにトラフィックを送ります。

ELBのフォワードリクエストは、ポート9443と9001を介してhttpsであるかどうかに基づいており、nginxはポート9001のすべてのトラフィックに対してリダイレクトを行います。そうでなければポート8080経由でJavaアプリケーションに転送されます。

元のURLがJavaアプリに届く前のURLを特定できる必要があるため、レスポンスの設定と動作を判断するために使用できます。私が思いついたベストは$http_refererですが、最初の訪問後にはどのリクエストに対しても機能します。最初の訪問時にもURLが必要です。

以下は、私たちの展開の(非常に)概略図です。私はそれが役に立ちそうです。 enter image description here

+0

['$ host'](http://nginx.org/en/docs/http/ngx_http_core_module.html#var_host)...それはあなたが探しているものですか?また、ワイルドカードやUCC(Multiple-SAN)SSL証明書のように見えますが、余分なELBをすべて不要にする可能性があります。 –

答えて

0

完全なホスト名がnginx層にプッシュされることが分かります。 nginxのログを変更しました。$hostを追加し、完全なホスト名が表示されました。問題私はTomcatがホストデータを失っているのですが、それは簡単に修正する必要があります。ここで

は、私がnginx.confに更新するものである:

log_format main '$host $remote_addr - $remote_user [$time_local] "$request" ' 
        '$status $body_bytes_sent "$http_referer" ' 
        '"$http_user_agent" "$http_x_forwarded_for"'; 

お知らせmain後のブロックの一番前で$host変数。

関連する問題