使用Nginx和路由将端口转发到Node.js应用程序

时间:2013-11-26 15:11:55

标签: node.js nginx routing

我在localhost:3000上运行我的节点应用程序,它正在为路由/提供默认页面。如果我访问http://localhost:3000,则会相应地显示默认页面。我还运行了一个基本配置如下的Nginx服务器:

server {
    listen       80;
    server_name  localhost;

    location /node_app {
        proxy_pass  http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

如果我现在运行http://localhost/node_app,我的节点应用程序会抛出错误,说它无法找到路由/node_app

如何通过调用http://localhost/node_app以我可以访问应用的方式配置我的节点应用或nginx服务器,但应用本身认为它位于/?< /强>

更新

如果我向/添加http://127.0.0.1:3000,则实际上会将/node_app/路由匹配。但现在,默认页面中的每个样式表现在指向错误的路径。

1 个答案:

答案 0 :(得分:9)

经过一段时间的实验后,我终于让配置正确地工作了我希望服务器如何工作:

server {
    location /node_app/ {
        proxy_pass  http://localhost:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

获得的经验:请记住斜杠!