gpt4 book ai didi

node.js - 502 错误网关,docker 内有 nginx 和 Node

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:26 26 4
gpt4 key购买 nike

我正在尝试在各自的 docker 容器中运行 Node 和 nginx,并从 nginx 到 Node 进行代理。我首先尝试了下面的配置没有docker并且它有效。但是,当使用 docker 时,它不起作用,并在尝试连接到 http://localhost/ 时给出 Status Code:502 Bad Gateway

Node 服务器

var http = require('http');
http.createServer(function (req, res) {
res.setHeader('content-type', 'text/html');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Request-Headers', '*');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET');
res.setHeader('Access-Control-Allow-Headers', '*');
res.end('<html>Hey</html>');
}).listen(3001);

docker-compose.yml

version: '3'
services:
app:
build: ./servers
nginx:
build: ./nginx
depends_on:
- app
links:
- app
volumes:
- ./nginx/conf:/etc/nginx/conf.d:ro
ports:
- 80:80

nginx配置

server {
listen 80;
listen [::]:80;

location / {
proxy_pass http://app;
}
}

应用程序 dockerfile

FROM node:alpine
RUN mkdir /app/
COPY ./server.js /app
EXPOSE 3001
WORKDIR /app
CMD node server

nginx dockerfile

FROM nginx:alpine
RUN rm /etc/nginx/conf.d/*

最佳答案

现在这看起来像一个愚蠢的问题,但我有一个误解,即 docker 将容器链接到它打开的任何端口而不指定端口。事实证明,我遵循的所有示例都使用了另一端的 80 端口。不管怎样,我已经足够证明自己了,我所要做的就是让 js 服务器监听 80 端口。

http.createServer(function (req, res) {
...
}).listen(80);

或者我相信我可以在 nginx conf 中使用端口 3001

    location / {
proxy_pass http://app:3001;
}

关于node.js - 502 错误网关,docker 内有 nginx 和 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44441230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com