docker中用于express.js服务器的Nginx反向代理

时间:2020-06-13 01:56:52

标签: node.js docker express nginx

在docker中,我有一个面向客户端的服务器容器,一个api服务器容器和一个在端口8000外部暴露的Nginx容器。运行api和客户端服务器容器后,我正在运行nginx容器,其中nginx.conf已替换为以下内容:

events {
}
http {
    server {
        listen 80;
        location /api {
            proxy_pass http://server:9002;
        }
        location / {
            proxy_pass http://client:9001;
        }
    }
}

我可以通过向clienthttp://localhost:8000发出请求来通过nginx验证http://localhost:8000/blah服务器是否正常工作。但是,如果我转到URL http://localhost:8000/api,它将重定向到http://localhost/api并且无法连接。

我通过使用单独的暴露端口运行server容器来验证它确实正在运行,并且它按要求返回了结果。我该如何解决?

1 个答案:

答案 0 :(得分:0)

这可能是环境变量问题。我在docker-compose.yml上设置了PORT env var,但是在Docekrfile中没有设置,添加它解决了这个问题。从docker-compose.yml中删除PORT env var仍然可以。