2
因此,我在nginx.conf中指向node.js应用程序时设置了一个虚拟路径。相关部分看起来像这样:除非我明确应用程序调用重定向Express.js与虚拟路径重定向
location /app {
rewrite /app/(.*) /$1 break;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
伟大工程。
作为一个例子,开发框运行在8080端口上nginx的,所以网址到节点的应用程序的根的样子:
http://localhost:8080/app
当我打电话从快递一个res.redirect('/app')
,实际重定向去:
http://localhost/app
因为什么都没有在端口80上运行,显然,这失败了。我也无法找到请求对象的任何属性,这些属性可以让我将URL构建为绝对URL。任何想法硬编码或使其成为环境变量?
*编辑:多一点挖后,它看起来像头被定义为在这种情况下只是“localhost”的主机,而如果我直接连接到EXPRES应用,主机头被定义为“本地主机:3000'(其中3000是节点应用正在监听的端口)。那么,如何更改上面的映射以包含nginx服务器的端口?
完美,就是这样。谢谢! – Paul 2012-02-24 16:00:02