Маршрутизировать другой прокси-сервер, основанный на запросе субдомена в 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
}
}
Есть ли какое-либо условие и как получить исходное имя домена из заголовка прокси?
Ответы
Ответ 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;
}
}
Для получения дополнительной информации вы можете обратиться здесь