Прокси Nginx в зависимости от доменного имени

Прокси Nginx в зависимости от доменного имени

Я использую 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, но это будет бессмысленно.

Связанный контент