Перенаправление домена на приложения TCP с разными портами, но на один и тот же IP - PullRequest
0 голосов
/ 14 октября 2019

Вопрос заключается в следующем, если возможно через nginx или аналогичное, перенаправить домен для подключения к внутреннему порту, расположенному на том же компьютере, например:

domainnametest.com => 83.12.a.b:4000 (http or anyelse)
application 1 listening on: 83.12.a.b:4001
application 2 listening on: 83.12.a.b:4002

Затем клиент отправляет запростип:

"application1.nombredominiotest.com:4000" -> redirect to application 1 on "83.12.a.b:4001"

o

"application2.nombredominiotest.com:4000" -> redirect to application 2 on "83.12.a.b:4002"

ПРИМЕЧАНИЕ : - Всегда использовать domainnametest: 4000 в качестве моста, поскольку 4000 является единственным открытым портом. - Приложение 1 и приложение 2 не равны.

РЕДАКТИРОВАТЬ:

Deployment Model

Спасибо!

РЕДАКТИРОВАТЬ 2: Проблема решена с помощью этой конфигурации в nginx:

stream { 
    upstream stream_backend { 
        server app1.com:4001; 
        server app2.com:4002; 
    } 
    server { 
        listen 4000; 
        proxy_pass stream_backend; 
    } 
}

1 Ответ

2 голосов
/ 14 октября 2019

используйте nginx в качестве обратного прокси-сервера для балансировки трафика из порта 4000 через порты 4001,4002:

stream {
    upstream application {
        server 127.0.0.1:4001
        server 127.0.0.1:4002
    }
    server {
        listen 4000
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass application; 
    }
}

https://www.nginx.com/blog/tcp-load-balancing-udp-load-balancing-nginx-tips-tricks/

РЕДАКТИРОВАТЬ

Сейчасчто вы добавили диаграмму. Я вижу, что вам нужно nginx для перенаправления каждого приложения на собственный порт, и это можно сделать с помощью nginx-маршрутизации на основе имен

server {
    listen 4000;
    server_name app1.com; # <-- app1 name
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:4001; # <-- app1 port
        }
}
server {
    listen 4000;
    server_name app2.com; # <-- app2 name
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:4002; # <-- app2 port
        }
}

http://blog.manugarri.com/how-to-easily-set-up-subdomain-routing-in-nginx/

dontзабудьте перенаправить хосты из вашего /etc/hosts файла:

<nginx_server_ip>   app1.com app2.com

, если вам нужно, чтобы он был общедоступным, вам нужно будет связать ваш сервер nginx с записью dns how

РЕДАКТИРОВАТЬ 2

stream { 
    upstream stream_backend { 
        server app1.com:4001; 
        server app2.com:4002; 
    } 
    server { 
        listen 4000; 
        proxy_pass stream_backend; 
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...