ドメイン名に応じたNginxプロキシ

ドメイン名に応じたNginxプロキシ

私は Nginx を搭載した AWS の EC2 を使用しています。

ドメイン名が 3 つあるとします: domain1.com、domain2.com、domain3.com。また、3 つの異なるポート (3000、3001、3002) に 3 つの Rails アプリケーションがあるとします。

これらのドメインはすべて、ポート 80 で私のサーバーにリンクされています。

要求された URL に応じて、ポート 80 で要求を正しいポートにリダイレクトします。

仮想ホスト ファイルをどのように構成すればよいですか? If ブロックが存在することは知っていますが、Nginx では推奨されていないようです。EC2 に複数のサイトを置く予定です。

Rails サーバーがブロックされるため、Rails アプリ ポートでサーバー ブロックを作成することはできません。

答え1

どちらによってドメイン(?) :

server {
    listen 80;
    server_name .domain1.com; # Wildcard domain
    return 301 $scheme://$host:3000$request_uri; 
    # use $host above because we use a wildcard domain
}

そして、このサーバーブロックをすべてのドメインとすべてのRailsアプリ/ポートに対して繰り返します。

答え2

サイトを別のポートに配置し、ポート 80 にリンクしたいとおっしゃっていますが、これは明確ではありません。

Nginxはポート80でさまざまなウェブサイトをリッスンできます。異なるドメインで設定するだけです。たとえば

server {
  server_name www.example.com;
  listen 80;
  return 301 https://www.example.com$request_uri;
}

server {
  server_name www.example.com;
  listen 443 ssl https;
  root /var/www/site;
  // Insert https stuff here
}

server {
  server_name www.example2.com;
  listen 80;
  root /var/www/site2;
}

server {
  server_name www.example3.com;
  listen 80;
  root /var/www/site3;
}

ロードバランサーと複数の nginx インスタンスを実行することもできますが、それは意味がありません。

関連情報