【发布时间】:2021-09-06 14:11:34
【问题描述】:
我安装了两个后端服务,应该由第三个 Nginx 服务代理。
我已经成功部署了 3 个服务,但由于某种原因,我无法让 nginx 看到其他 2 个服务出现错误:
GET / HTTP/1.1" 502 560
和
[error] 8#8: *1 no live upstreams while connection to upstream
我已尝试将所有服务更改为他们自己的网络,但似乎问题没有解决。
添加我的 docker-compose.yml:
version: "3"
services:
nginx_web_1:
image: nginx:1.17
volumes:
- "./files_1:/usr/share/nginx/html:ro"
nginx_web_2:
image: nginx:1.17
volumes:
- "./files_2:/usr/share/nginx/html:ro"
nginx_balancer:
build: ./balancer
ports:
- 5000:80
depends_on:
- nginx_web_1
- nginx_web_2
这就是我配置代理的方式:
文件移动到/etc/nginx/conf.d/default.conf
upstream backend_hosts {
server nginx_web_1;
server nginx_web_2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend_hosts;
}
}
【问题讨论】:
-
nginx_web_1和nginx_web_12运行在哪些端口上?如果它们在同一台服务器上运行,它将与端口 80 重复 -
它们在 80 上运行,但端口没有外部映射。这个想法是他们的 web_1 和 web_2 服务器只在默认的 docker 的桥接网络中公开他们的端口,nginx 也在那里。它们都应该映射到不同的 ip,因此不会发生端口冲突
标签: nginx docker-compose