使用nginx app在基本URL上运行NodeJs express app

时间:2015-12-03 03:50:54

标签: node.js express nginx proxy

方案

我有一个php应用程序。此应用运行在abc.com上。它使用nginx服务器。 现在我创建了一个新应用程序,一个NodeJS快速应用程序。这个我需要部署在abc.com/nodeApp(不是abc.com/nodeApp/

我做了什么

abc.com的nginx配置中,我编写了一个配置来代理节点服务器的流量。这是nginx配置。

  location = /nodeApp {
    proxy_pass http://$nodeApp;
    include proxy_params;
  }

  location /nodeApp/ {
    # remove all trailing slash
    rewrite ^/(.*)/$ /$1 permanent;
    proxy_pass http://$nodeApp;
    include proxy_params;
  } 

问题

现在,在点击abc.com/nodeApp时,它会将我带到nodeJs服务器。但服务器正在给予 CANNOT GET /nodeApp

因此,nodeJs服务器期望/上的流量而不是/nodeApp上的流量。 如何使服务器具有基本URL。这是我的nodeJs文件。

var express = require("express");
var app = express();
var config = require('./config/config');

app.use(express.static(__dirname + '/build'));

var port = process.env.PORT || config.serverPort;
app.listen(port, function() {
  console.log("Listening on " + port);
});

1 个答案:

答案 0 :(得分:0)

通过向/指令添加尾随proxy_path,您可以将/nodeapp映射到/上游。

location = /nodeApp {
    proxy_pass http://$nodeApp/;
    include proxy_params;
}

有关详细信息,请参阅this document