Как настроить обратный прокси-сервер Nginx для 2 приложений, работающих на одном компьютере на разных портах

#nginx #reverse-proxy

#nginx #обратный прокси

Вопрос:

На моем компьютере aws ubuntu (18.04) у меня есть 2 приложения, работающие на 2 портах

(1) У меня есть .net core 3.1 angular spa с сервером идентификации 4, работающим на 5000, и я настроил его, выполнив следующие действия

Nginx — это только обратный прокси

(2) У меня есть приложение angular ssr, работающее на порту 4000.

Чего я хочу добиться, так это того, чтобы обратный прокси-сервер подключал ботов социальных сетей к порту 4000, в то время как все остальные запросы перенаправляются на 5000.

В настоящее время nginx проксирует только приложение .net core на порту 5000

Ответ №1:

Вы можете использовать «location и proxy_pass» для доступа к нужным приложениям, которые работают на разных портах.

Если у вас есть все материалы на одной виртуальной машине, просто используйте localhost вместо ip-адреса, который я записал.
Но если приложение запущено на другой виртуальной машине, используйте его IP-адрес, который в моей конфигурации является сервером назначения: 172.16.0.100

Вы можете отредактировать файл hosts и использовать «example.com » или что угодно, чтобы указать ваш сайт и использовать в вашем конфигурационном файле nginx вместо IP или localhost.

 sudo vi /etc/hosts
172.16.0.100    example.com
 

и добавьте желаемое полное доменное имя на хост назначения или, если у вас есть dns, добавьте запись AAAA, которая будет доступна во всей локальной сети.

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

 server {
{
    listen 80;
    server_name 172.16.0.100;

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;

    location /angular {
        proxy_pass http://172.16.0.100:5000;
    }
    location /ssr {
        proxy_pass http://172.16.0.100:4000;
    }
}