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

我在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,我的节点应用程序会抛出一个错误,说它无法找到route / node_app.

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

更新

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

解决方法:

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

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;
    }
}

获得的经验教训:记住斜线!

上一篇:php – Laravel 5.2 Post 302重定向到GET


下一篇:二分查找及其变种实现