У меня есть приложение 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), и он работал отлично. Однако я хочу использовать маршрут обнаружения службы.