Javascript 从子文件夹运行的Node.js服务器

Javascript 从子文件夹运行的Node.js服务器,javascript,node.js,Javascript,Node.js,所以我参加Node.js派对已经很晚了。主要是因为没有人邀请我谢谢。也就是说,我正在着手解决这个问题。我来自ASP的经典背景,所以有一些事情我还没有理解 如果有人能给我指出正确的方向,那就太好了。提前谢谢 所以,我正在以标准方式设置服务器 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.en

所以我参加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/

编辑: 让事情更清楚一点。我目前正在
http://newsite.dev/
,但希望长期放弃。同时,需要并行运行它们

编辑
再次澄清一下,我正在我的OSX上运行一切,所以apache(MAMP)安装

您要求创建一个虚拟目录,是的,您可以使用PHP设置Node.js,但必须阅读一些内容

虚拟目录是位于www.yourwebsite/myotherwebsite这样的文件夹中的网站

下面是如何在Apache中设置它

下面是如何在IIS中设置它

然后需要将Node.js与Apache或IIS连接起来。这里有更多的说明

Linux:


Windows:

一次只能有一台服务器监听一个端口。同一端口上不能有Node.js和其他服务器

最好是为其他服务器设置不同的主机名


如果不能做到这一点,标准方法是将请求从一台服务器代理到另一台服务器。这相对容易做到,但您没有指定正在运行的服务器,因此不可能更具体。

您有很多选项,但没有一个选项允许您在与Apache+PHP相同的服务器上使用端口80,而无需代理

您的两个最佳选择如下:

1) 设置一个新的子域-为node.newsite.dev创建一个新的DNS条目,并将该子域定向到另一台服务器上的一个完全不同的IP(尽管从技术上讲,您可以在同一台服务器上设置两个IP,请参见),然后节点可以在其单独服务器上的端口80上运行

2) 让Apache在/path/to/Apache/publicdir/newsite.dev的端口80上运行,让node在/path/to/node/application/newsite.dev的端口1337上运行,然后您可以在访问Apache文件,并在访问节点应用程序

无论您做什么,都不要将节点应用程序放在Apache知道的子目录中,除非您希望公开提供这些.js文件

编辑以响应您的编辑:
如果您的目标是以独占方式移动到节点,并最终关闭Apache+PHP,那么最好使用子域。缺点是你必须在任何地方使用完全限定的链接。好处是,当您觉得应用程序在节点中的空间足够大时,您可以执行查找/替换
(#//(www\)?newsite.dev#、'//apache.newsite.dev')
(#//node.newsite.dev#、'//newsite.dev')
,然后当您完全脱离apache时,只需将其关闭。

我假设存在不同的服务器(如apache或nginx)在
http://newsite.dev
已经开始了吗?在这种情况下,使用子域可能更容易,如
http://api.newsite.dev
节点应用程序运行的位置。@max已更新以澄清。这是否意味着无法从子文件夹运行?您是在apache或iis上还是什么?这将有助于回答。@JasonSebring抱歉,更新以澄清!