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

Node.js 用于express.js服务器的docker中的Nginx反向代理,node.js,docker,express,nginx,Node.js,Docker,Express,Nginx,在docker中,我有一个面向客户端的服务器容器、一个api服务器容器和一个nginx容器,它们暴露在端口8000的外部。在运行api和客户机-服务器容器之后,我正在运行nginx容器,其中的hasnginx.conf替换为以下内容: events { } http { server { listen 80; location /api { proxy_pass http://server:9002; }

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

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

我可以通过向
http://localhost:8000
http://localhost:8000/blah
。但是如果我转到URL
http://localhost:8000/api
,它将重定向到
http://localhost/api
,无法连接


我通过使用一个单独的公开端口运行
服务器
容器来验证该容器是否实际正在运行,并按预期在请求时返回结果。我该如何解决这个问题?

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

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

您能否共享Dockerfile和docker-compose.yml中的完整代码(如果有)?根据配置,如果访问
http://localhost/api
如果您访问
http://localhost
应重定向到
http://client:9002
您能否共享Dockerfile和docker-compose.yml中的完整代码(如果有)?根据配置,如果访问
http://localhost/api
如果您访问
http://localhost
应重定向到
http://client:9002