0

NginxをWebサーバーとして使用するレールアプリ(3.2.x)https://myapp.com(架空の名前)があり、1つのサーバーがソフトウェアスタック全体を実行しています。https に注意してください。有効な SSL 証明書がインストールされています。

トラフィックの増加に伴い、アプリケーションの前にロードバランサーを追加したいので、アイデアは次のとおりです。

1 つのロードバランサー (Nginx を使用)
4 つのアプリ サーバー (RubOnRails / Nginx を実行)
1 つの DB サーバー

サーバー名は

lb.myapp.com
app1.myapp.com、app2.myapp.com、app3.myapp.com、app4.myapp.com
db.myapp.com

SSL処理をアプリサーバーレベルで維持したい(ロードバランサーとアプリサーバー間のネットワークトラフィックを必ずしも信頼できないため)。

  1. サーバー名 app1.myapp.com (それぞれ) を各アプリ サーバーの server_name 構成パラメーターに入れ、lb.myapp.com をロードバランサーの server_config パラメーターに入れるのは正しいですか?

  2. ロードバランサーに設定された ssl_on、ssl_certificate、および ssl_certificate_key 構成パラメーターを設定する必要はなく、アプリサーバー (SSL 部分を処理することになっている) でのみ設定する必要があることは正しいと思いますか? 私は追加するだけです

    proxy_set_header X-FORWARDED-PROTO https;
    proxy_redirect off;
    

    ロードバランサーに?

  3. 必要な SSL 証明書は何ですか?それは myapp.com だけですか?それとも、アプリ サーバーごとに異なる証明書が必要ですか?

4

1 に答える 1

0
  1. これは、アプリ サーバーが HOST 値に応じて複数のサイトを提供する場合にのみ重要です。
  2. 間違った仮定。提案されたセットアップは、nginx ロードバランサーで SSL ターミネーションが行われることを意味します。これは、ロードバランサーで myapp.com SSL 証明書を構成する必要があることを意味します。
  3. ロードバランサーとアプリサーバー間の接続を信頼していないと指摘しました。これはさまざまなレベルで解決できます。いくつかの解決策は次のとおりです (ロードバランサーでの SSL ターミネーションを想定):
    • アプリサーバーへのhttps(あなた自身の提案)。これには、myapp.com +(自己署名)アプリサーバーSSL証明書が必要です。
    • ロードバランサーとアプリ サーバー間の VPN

別のアプローチは、アプリ サーバーで SSL ターミネーションを行うことです。これは、たとえば HAProxy ( http://haproxy.1wt.eu/ )で実現できます。このアプローチには、次のようないくつかの注意事項があります。アプリ サーバーへのすべての接続には、ロードバランサーがオリジンとして含まれます。

于 2013-04-07T07:43:19.070 に答える