从ECS实例调用服务发现端点[nginx,angular,express]

从ECS实例调用服务发现端点[nginx,angular,express],angular,express,nginx,devops,amazon-ecs,Angular,Express,Nginx,Devops,Amazon Ecs,我有一个angular应用程序,它使用nginx作为反向代理,通过/api位置连接到后端服务器。我在Docker容器中使用angular应用程序作为服务在ECS实例上运行,它将容器中的主机端口80绑定到8080 我已经启动了后端作为一个容器,通过ECS将3000:3000作为一个单独的服务公开。这一次,我使用awsvpc来使用A记录启用此端点的服务发现。我正在重写传入url以远程发送前缀:/api 现在,如果我尝试从EC2实例中ping后端服务(使用curl),我就能够收到响应。但是,我的ang

我有一个angular应用程序,它使用nginx作为反向代理,通过/api位置连接到后端服务器。我在Docker容器中使用angular应用程序作为服务在ECS实例上运行,它将容器中的主机端口80绑定到8080

我已经启动了后端作为一个容器,通过ECS将3000:3000作为一个单独的服务公开。这一次,我使用awsvpc来使用A记录启用此端点的服务发现。我正在重写传入url以远程发送前缀:/api

现在,如果我尝试从EC2实例中ping后端服务(使用curl),我就能够收到响应。但是,我的angular应用程序无法连接到后端服务。我认为这是nginx.conf文件(如下)中的一个配置问题:


有人能告诉我如何调试这个程序吗?我已经被困在这个问题上好几天了。。。我尝试使用网桥模式并硬编码容器的ip地址(172.17.0.2:3000),它工作得非常好。但是,我想使用服务发现路线。

dig backend.local为您提供了什么?它正确解析IP吗?如果nginx conf中的硬连接ip提供了正确的行为,这听起来更像是DNS问题。从ECS实例ping backend.local提供了正确的行为。但是,我的前端angular应用程序无法连接到backend.local。你能给我一个我在ECS上启动的跑步应用示例,并对其进行进一步分类吗?
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/*;
}