Подтвердить что ты не робот

Маршрутизировать другой прокси-сервер, основанный на запросе субдомена в nginx

У меня есть один выделенный сервер на этом сервере, я развернул 5 приложений nodejs.

domain name: www.nnd.com
dedicated server ip: xxx.xx.x.60

У меня был домен, на который указывает выделенный мне сервер ip.

Поддомены

:

app1.nnd.com pointed to xxx.xx.x.60
app2.nnd.com pointed to xxx.xx.x.60
app3.nnd.com pointed to xxx.xx.x.60
app4.nnd.com pointed to xxx.xx.x.60
app5.nnd.com pointed to xxx.xx.x.60

теперь в файле конфигурации nginx на основе субдомена мне нужно прокси-сервер. Пример:

{
    listen:80;
    server_name:xxx.xx.x.60
    location / {
        #here based on subdomain of the request I need to create proxy_pass for my node application 
    }
}

Есть ли какое-либо условие и как получить исходное имя домена из заголовка прокси?

4b9b3361

Ответ 1

создать виртуальный хост для каждого

server {
  server_name sub1.example.com;
  location / {
    proxy_pass http://127.0.0.1:xxxx;
  }
}
server {
  server_name sub2.example.com;
  location / {
    proxy_pass http://127.0.0.1:xxxx;
  }
}

И продолжайте, измените номер порта, чтобы он соответствовал правильному порту.

Ответ 2

Вы можете использовать RegExp для получения имени хоста, такого как

server {
    server_name   ~^(www\.)?(?<domain>.+)$;

    location / {
        root   /sites/$domain;
    }
}

Ответ 3

Вы можете создать виртуальный хост для каждого поддомена.

Для Ex у вас есть 2 поддомена abc.xyz.com и abcd.xyz.com, и вы хотите разместить его на одном экземпляре nginx через proxy_pass, тогда вы можете просто создать виртуальный хост для каждого sub domain

server {
  server_name abc.xyz.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}
server {
  server_name abcd.xyz.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}

Для получения дополнительной информации вы можете обратиться здесь