Я использую EC2 от AWS с Nginx.
Допустим, у меня есть три доменных имени: domain1.com, domain2.com, domain3.com. Допустим, у меня есть три приложения rails на трех разных портах: 3000, 3001, 3002.
Все эти домены подключены к моему серверу через порт 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, но это будет бессмысленно.