我正在谷歌搜索并尝试将nginx用于带有docker compose的简单node.js应用程序。但是当我查看localhost:8081时,我的请求以502错误的门方式返回了我。如何处理此错误?
我的文件结构如下:
负载均衡器:
DockerFile:
FROM nginx:stable-alpine
LABEL xxx yyyyyy
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 8081
CMD ["nginx", "-g", "daemon off;"]
nginx.conf:
events { worker_connections 1024; }
http {
upstream localhost {
server backend1:3001;
server backend2:3001;
server backend3:3001;
}
server {
listen 8081;
server_name localhost;
location / {
proxy_pass http://localhost;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}
}
docker-compose.yml
version: '3.2'
services:
backend1:
build: ./backend
tty: true
volumes:
- './backend'
backend2:
build: ./backend
tty: true
volumes:
- './backend'
backend3:
build: ./backend
tty: true
volumes:
- './backend'
loadbalancer:
build: ./load-balancer
tty: true
links:
- backend1
- backend2
- backend3
ports:
- '8081:8081'
volumes:
backend:
我的存储库:https://github.com/yusufkaratoprak/nginx_docker_loadbalancer
答案 0 :(得分:1)
未设置要运行的backend
容器映像的命令。
默认情况下,官方的nodejs映像运行node
,当存在tty
时它将启动cli。我假设在compose定义中启用了tty,以防止容器崩溃。
用于应用程序的简单Dockerfile
如下所示:
FROM node:boron
WORKDIR /app
COPY src/. /app/
RUN npm install
EXPOSE 3001
CMD [ "node", "/app/index.js" ]
大多数守护程序不需要tty
,请从tty
中删除docker-compose.yml
设置。 links
在版本2+撰写文件中也是多余的。
version: '3.2'
services:
backend1:
build: ./backend
volumes:
- './backend'
backend2:
build: ./backend
volumes:
- './backend'
backend3:
build: ./backend
volumes:
- './backend'
loadbalancer:
build: ./load-balancer
ports:
- '8081:8081'
volumes:
backend:
答案 1 :(得分:0)
本文非常有帮助,它将帮助您使用Nginx,Docker和Node.js构建负载均衡器 Docker,NGINX and nodejs load balancer
这也是一个演示demo-video
的演示