Вызов конечной точки обнаружения службы из экземпляра ECS [nginx, angular, экспресс] - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть приложение angular, которое использует nginx в качестве обратного прокси-сервера для подключения к внутреннему серверу через местоположение / api . У меня есть приложение angular в контейнере Docker, работающее на экземпляре ECS в качестве службы, которая связывает порт хоста с 80 до 8080 в контейнере.

Я запустил бэкэнд в качестве контейнера, отображающего 3000: 3000 как отдельная услуга через ECS. На этот раз я использую awsvp c, чтобы включить обнаружение службы этой конечной точки с использованием записи A. Я переписываю входящий URL для удаленного префикса: / api

Теперь, если я попытаюсь пропинговать бэкэнд-сервис (используя curl) из экземпляра EC2, я смогу получить ответ. Но мое приложение angular не может подключиться к серверной службе. Я думаю, что это проблема конфигурации в файле nginx .conf (ниже):

worker_processes  2;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  localhost;
        root html/composite-app;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            try_files $uri $uri/ /index.html;
        }

        location /api {
            rewrite /api/(.*) /$1  break;
            proxy_pass http://backend.local:3000;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    include servers/*;
}

Может ли кто-нибудь указать мне правильное направление относительно того, как я могу отладить это? Я застрял на этом в течение нескольких дней ... Я пытался использовать режим моста и жестко кодировать IP-адрес контейнера (172.17.0.2:3000), и он работал отлично. Однако я хочу использовать маршрут обнаружения службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...