【发布时间】:2012-02-23 20:42:06
【问题描述】:
所以我在 nginx.conf 中指向 node.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;
}
效果很好,除非我的 express 应用调用重定向。
例如,开发盒在 8080 端口上运行 nginx,因此节点应用程序根目录的 url 如下所示:
http://localhost:8080/app
当我从 express 中调用 res.redirect('/app') 时,实际重定向到:
http://localhost/app
由于端口 80 上没有运行任何东西,显然,这会失败。我也找不到任何可以让我将 URL 构造为绝对 URL 的请求对象的属性。除了硬编码或使其成为环境变量之外还有什么想法吗?
* 编辑:经过一番挖掘,在这种情况下,主机头似乎被定义为“localhost”,而如果我直接连接到 expres 应用程序,主机头是定义为“localhost:3000”(其中 3000 是节点应用程序正在侦听的端口)。那么如何更改上面的映射以包含 nginx 服务器的端口呢?
【问题讨论】: