我正在尝试使用express.js和nginx作为Docker的反向代理。快递应用程序可以自行使用docker,但是当我添加nginx时,我得到了502响应。它打印这个:
nginx_1 | 2019/03/30 21:14:04 [错误] 6#6:* 3连接失败(111:连接被拒绝)连接上游,客户端:172.20.0.1,服务器:localhost,请求:“GET / HTTP /1.1“,上游:”http://127.0.0.1:20000/“,主持人:”localhost:21000“
docker-compose.yml
version: '3.3'
services:
app:
image: node:latest
volumes:
- ./app:/usr/src/service/app
working_dir: /usr/src/service/app
command: ["node", "app"]
ports:
- 20000:18000
nginx:
image: nginx:latest
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/error.log:/etc/nginx/error_log.log
- ./nginx/cache/:/etc/nginx/cache
ports:
- 21000:80
nginx.conf
events {
}
http {
upstream upstream_server {
server localhost:20000;
}
server {
listen 127.0.0.1;
listen 80;
server_name localhost;
location / {
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://upstream_server;
break;
}
}
}
您的nginx容器和应用程序容器位于同一网络上但不在同一主机上 - 因此localhost
不是您发现应用程序运行的地方。
尝试使用app
作为上游的server
参数 - 这应该解析为撰写网络中app
容器的IP。