所以我对Node.js派对来说已经很晚了。主要是因为没有人邀请我...... 谢谢。那就是说,我开始研究它了。我来自ASP经典背景,所以有一些我还没有理解的东西。
如果有人可以指出我正确的方向,那将是伟大的。提前致谢。
所以,我正在以标准方式设置服务器。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
这给了我一个很好的页面 http://127.0.0.1:1337/
。可爱。
我正在建设的网站位于 http://newsite.dev/
。是不是可以(不要笑)设置节点服务器从我的站点的子文件夹运行,比方说 http://newsite.dev/api/
?
那么,可以发送来自客户端脚本的任何查询 /api/
而不是 http://127.0.0.1:1337/
。
编辑:
使事情更清楚一些。我目前正在运行自定义PHP框架 http://newsite.dev/
,但希望放弃这个长期。同时,需要并行运行它们。
编辑
再说一次,为了澄清,我正在运行OS X上的所有内容,所以安装了apache(MAMP)。
您有很多选项,但它们都不允许您在与Apache + PHP相同的服务器上使用端口80作为Node应用程序而不进行代理。
您最好的两个选择如下:
1)设置一个新的子域 - 为node.newsite.dev创建一个新的DNS条目,并在另一台服务器上将该子域指向一个完全不同的IP(但从技术上讲,你可以在同一台服务器上设置两个IP,看到 这里),然后节点可以在其单独的服务器上的端口80上运行
2)让Apache在/path/to/apache/publicdir/newsite.dev上的端口80上运行,并在/path/to/node/application/newsite.dev上的端口1337上运行节点,然后你可以访问你的apache文件在 http://newsite.dev,以及您的节点应用程序 http://newsite.dev:1337
无论您做什么,都不要将您的节点应用程序放在Apache知道的子目录中,除非您想公开提供这些.js文件。
编辑回复您的编辑:
如果您的目标是专门转移到Node并最终关闭Apache + PHP,那么您最好的选择是使用子域。缺点是你必须在任何地方使用完全合格的链接。好处是,当您感觉应用程序位于节点中时,您可以进行查找/替换 (#//(www\.)?newsite.dev#, '//apache.newsite.dev')
和 (#//node.newsite.dev#, '//newsite.dev')
,然后当你完全脱离Apache时,只需关闭它。
一次只能有一台服务器侦听端口。您不能在同一端口上安装Node.js和其他服务器。
最好的办法是为其他服务器设置不同的主机名。
如果您不能这样做,标准方法是将请求从一个服务器代理到另一个服务器。这样做相对容易,但是您没有指定正在运行的服务器,因此不可能更具体。