私は 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 インスタンスを実行することもできますが、それは意味がありません。