链接容器的docker nginx代理不工作

链接容器的docker nginx代理不工作,docker,nginx,docker-compose,reverse-proxy,Docker,Nginx,Docker Compose,Reverse Proxy,我试过这个: 这是: 然后从这里开始执行nginx配置: 我只是想告诉nginx代理端口4000上的链接api服务。我不想向主机公开4000,因为将有多个服务在此端口上运行 这是我的docker compose.yml: 版本:“3” 服务: 应用程序编程接口: 构建:./api 图片:myapi:latest 容器名称:api api_nginx: 图片:nginx:latest 容器名称:api\u nginx 取决于: -原料药 链接: -原料药 端口: - "80:80" 环境:

我试过这个:

这是:

然后从这里开始执行nginx配置:

我只是想告诉nginx代理端口
4000
上的链接api服务。我不想向主机公开
4000
,因为将有多个服务在此端口上运行

这是我的
docker compose.yml

版本:“3”
服务:
应用程序编程接口:
构建:./api
图片:myapi:latest
容器名称:api
api_nginx:
图片:nginx:latest
容器名称:api\u nginx
取决于:
-原料药
链接:
-原料药
端口:
- "80:80"
环境:
-NGINX_服务器名称:localhost
卷数:
-/nginx:/etc/nginx/conf.d
...
...
我的nginx服务器是超小型的:

upstream backend {
   server api;
}
server {
   listen 80;
   listen [::]:80;
   server_name ${NGINX_SERVEE_NAME};
   location / {
      resolver 127.0.0.1;
      proxy_pass http://backend/$1;
   }
}
这是引发的错误:

...[error] 20#20: *1 no resolver defined to resolve api, client: 172.23.0.1, server: ${nginx_server_name}....
该页面显示一个
502坏网关


发生了什么事?我关注过其他人的nginx配置,但它不起作用,我不知道。

这两个服务都需要共享一个公共网络,并按其名称进行寻址。创建一个网络并将其添加到您的容器中,就像在@AndrewMorozko中一样,两个容器都位于
default
网络上;您无需手动声明任何内容即可使容器间网络正常工作(也不需要
链接:
)。Docker文档中有更多细节。David是正确的,您似乎不需要它们。我可以发誓有一些问题需要手动创建一个网络,但似乎已经解决了。@AndrewMorozko如果没有链接,它仍然会给出相同的错误,我将尝试andrew发布的网络东西,即使你说我可能不需要它,我也会给出一个答案shot@DavidMaze不,在andrew发布的另一个问题中添加网桥网络时出现了相同的错误。它仍然在说
1没有定义解析程序来解析api…
我认为这与我的nginx配置有关?这两个服务都需要共享一个公共网络,以通过它们的名称进行寻址。创建一个网络并将其添加到您的容器中,就像在@AndrewMorozko中一样,两个容器都位于
default
网络上;您无需手动声明任何内容即可使容器间网络正常工作(也不需要
链接:
)。Docker文档中有更多细节。David是正确的,您似乎不需要它们。我可以发誓有一些问题需要手动创建一个网络,但似乎已经解决了。@AndrewMorozko如果没有链接,它仍然会给出相同的错误,我将尝试andrew发布的网络东西,即使你说我可能不需要它,我也会给出一个答案shot@DavidMaze不,在andrew发布的另一个问题中添加网桥网络时出现了相同的错误。它仍然在说
1没有定义解析程序来解析api…
我认为这与我的nginx配置有关?