反向代理nginx和Express服务器返回502

我正在运行一个带有Nginx反向代理configuration的VPS,转发给三个Angular网站。 每个站点都在Express服务器后面的Docker容器中运行。

我起床的前两个网站没有问题。 他们是简单的Angular网站,在项目目录的底部有server.jsindex.html文件。

对于第三个站点我有一点点爱好者,并使用Grunt将项目文件构build到一个名为public的新目录中。 我的目标是从该公共目录中查看该站点。

这是我的nginx.conf文件。 请注意,前两个服务器块正在按预期工作。 然而,浏览到第三个结果是“502错误请求”:

 server { listen 80; server_name domain1.com domain2.ca; location / { proxy_pass http://127.0.0.1:9001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name sub1.domain1.com sub1.domain2.ca; location / { proxy_pass http://127.0.0.1:9002; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } // THIS IS THE SERVER THAT IS NOT WORKING server { listen 80; server_name sub2.domain1.com sub2.domain2.ca; location / { proxy_pass http://127.0.0.1:9003; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 

这是启动我的快速服务器的文件。 所有这三个项目都有非常相似的服务器,但是这个服务器在/public提供静态文件,而不是/

 var express = require('express'); var http = require('http'); var app = express(); app.use(express.static(__dirname + '/public')); var port = 80; http.createServer(app).listen(port, function() { console.log("server listening on port " + port); }); 

最后,因为这个站点在docker集装箱内,所以我的Dockerfile用于构build它:

 # Start with angular node grunt bower setup FROM brymastr/angular:latest # Add to working dir WORKDIR /src ADD . /src # install dependencies RUN npm install RUN bower install --allow-root RUN sudo apt-get -y install ruby-full RUN sudo gem install sass RUN grunt build # Run application EXPOSE 80 CMD ["nodemon", "server.js"] 

在我的两个本地开发环境中运行容器时,此图像工作得很好。 这让我觉得问题是在VPS上的nginxconfiguration。

总结一下:nginx接受请求并将其转发给分配给运行该站点的泊坞窗容器的端口。 容器的快速服务器提取请求并提供项目的/public文件夹中的文件。

当我提到nginx和express之间的路由时,我是否错过了一些东西?

任何帮助是极大的赞赏。 我还是一个新手,我只是想在一台VPS上节省一些运行小型站点的资金。 有可能是一个更好/更简单的方法来做到这一点,但这是我现在想出的。 我已经search了很多,并且尝试了很多,包括在/有nginx代理传递给127.0.0.1:9003/public而不是运气的快递服务静态文件。

谢谢