0

我继承了一个项目,该项目涉及在 node.js 上运行的管理员应用程序与在 apache 上运行的类似 REST 的 api 对话。我对 [LM]AMP 非常熟悉,但我是 node.js 的新手。

我正在尝试在我的本地机器上设置整个环境,即 MAMP。

当我使用原始设置(在名为“build”的目录下的节点配置文件中)时,应用程序主机指向真实服务器,node.js 站点正常运行:

var options = underscore.defaults(options, {
    ...
    port: 8000,
    proxy_app: true,
    app_host: 'www.example.com',
    app_port: 80
});

在浏览器中,将http://localhost:8000/app/do/something返回一些有效的 json。

(我在这里的理解是有限的,但我相信节点正在将此请求代理到运行应用程序的 apache 服务器)。

但是,当我将它指向我的本地服务器时......

var options = underscore.defaults(options, {
    ...
    port: 8000,
    proxy_app: true,
    app_host: 'www.mylocalexample.com',
    app_port: 80
});

现在,http://localhost:8000/app/do/something返回 404 Not Found。

所以这个 node.js 配置文件的唯一区别是主机,它是有效的(如果我直接在我的本地主机上调用应用程序 api 它可以工作,即我得到有效的 json)。由于某种原因,node.js 代理的请求似乎没有发送到我的 MAMP 服务器,或者确实被发送但 MAMP 拒绝了它。apache 日志中没有错误。

有任何想法吗?Firebug 也没有告诉我太多用处,所以我不确定如何进一步调试。我的直觉说这一定是我 MAMP 的 Apache 上的一些设置,但我不确定它可能是什么。

4

1 回答 1

2

大概您的应用程序正在检查Host您的 HTTP 请求中的标头并基于它进行路由(“虚拟主机”)。localhost...在您的浏览器中转到会将标题设置为,localhost因此它不会匹配任何正在寻找的www.mylocalexample.com. 尝试在您的hosts文件中创建一个指向www.mylocalexample.com127.0.0.1 的条目,然后粘贴www.mylocalexample.com到您的浏览器中。

于 2012-06-30T11:12:49.253 回答