为什么我的 Nginx 代理成功找到我的节点网络服务器,因为我的 docker-compose 没有在网络上公开任何网络服务器端口?



我的节点网络服务器使用快速并侦听端口5500。 我的 dockerfile-compose 没有公开我的节点网络服务器(名为网络服务器(的任何端口,如下所示:

version: "3"
services:
webserver:
build: ./server
form:
build: ./ui
ports:
- "6800:80"
networks:
- backend  // i let the backend network just for legacy but in fact webserver isn't in this networks
command: [nginx-debug, '-g', 'daemon off;']
networks:

后端:

我的 Nginx 反向代理如下:

/request { 
proxy_pass http://webserver:5500/request 
} 

期望:由于两个服务之间缺少共享网络,Y 请求必须失败。 结果:请求成功。

我不明白为什么? 也许容器之间的默认网络使工作? 详细信息:当reverse_proxy重定向到错误的端口时,请求失败,但如果域名错误且端口良好,则请求成功,如下所示:

proxy_pass http://webver:5500/request>成功

我无法理解这里的Nginx/Docker流程。有人会向我们解释这里发生了什么?

较新版本的 Docker Compose 会自动创建 Docker 网络。 一旦该网络存在,Docker 就会提供自己的 DNS 系统,以便容器可以通过名称或网络别名相互访问;Compose 在 YAML 文件中以每个服务的名称注册每个服务,因此在这组容器中,webserverform都是可解析的主机名。

(由此推论,您通常根本不需要在 YAML 文件中包含networks:块,并且显式指定container_name:或手动设置容器网络设置没有多大好处。

最新更新