Javascript 如何在专用服务器上配置我的node.js应用程序以使其联机?

Javascript 如何在专用服务器上配置我的node.js应用程序以使其联机?,javascript,node.js,port,Javascript,Node.js,Port,我已经在我的服务器上安装了node.js(它是一个虚拟的windows服务器)。我也有这个域名。我想在端口8001上运行node.js应用程序,这样当我打开时,它就会打开我的应用程序 实际上,我还有一个PHP站点在Apache服务器上的端口80(XAMPP)上运行。当我打开时,它工作得很好 谢谢在apache中,创建一个新的vhost。您必须通过apache将所有请求代理到您的节点应用程序,因为apache正在侦听端口80 <VirtualHost *:80> ServerN

我已经在我的服务器上安装了node.js(它是一个虚拟的windows服务器)。我也有这个域名。我想在端口8001上运行node.js应用程序,这样当我打开时,它就会打开我的应用程序

实际上,我还有一个PHP站点在Apache服务器上的端口80(XAMPP)上运行。当我打开时,它工作得很好


谢谢

在apache中,创建一个新的vhost。您必须通过apache将所有请求代理到您的节点应用程序,因为apache正在侦听端口80

<VirtualHost *:80>
    ServerName example.com

    ProxyRequests off

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    <Location />
        ProxyPass http://localhost:8001/
        ProxyPassReverse http://localhost:8001/
    </Location>
</VirtualHost>

ServerName example.com
代理请求关闭
命令拒绝,允许
通融
ProxyPasshttp://localhost:8001/
ProxyPassReversehttp://localhost:8001/

如果您不在基于名称的虚拟主机环境中,您只需启动Node.js服务器,即可从定义的端口将其提供给全世界。但是,如果服务器IP地址使用不同的域名运行许多服务,并且您希望您的Node.js服务器仅从中回复,则您可以使用节点服务器上的
vhost
模块仅侦听特定域:

var express = require('express'),
    host = require('vhost');

var app = express();
app.get('/', function(req, res) {
  res.send("Hello from vhost");
});

var main = express();
main.use(vhost('example.com', app));

if (!module.parent) {
  main.listen(8001);
}
您也可以通过Apache或nginx等web服务器代理请求,但要让服务从端口8001响应,您需要将web服务器绑定到端口8001(除了您已经使用的80),并在其他端口上运行Node.js服务器


通常,人们更喜欢使用标准HTTP端口,并使用web服务器将代理流量反向传输到运行在非特权端口上的Node.js服务器。由于您的域名上已经有了PHP应用程序,因此您可以按照@SamT的建议,从中运行Node.js应用程序,例如。

Bonus Info:PHP实际上不是在80上运行的,而是在Apache服务器上运行的。Apache(通常)通过CGI与PHP脚本“通信”(现在是FastCGI)。如果您运行PHP-FPM而不是CGI,那么您将配置一个反向代理,以便在端口9000(默认情况下)上与PHP-FPM通信。感谢您提供的信息。有没有办法在没有Apache的情况下托管应用程序,因为我无论如何都会卸载它。我想实现的是,当我打开它时,它将运行我的节点应用程序,最终在不同端口上运行多个节点应用程序。注意:我的服务器ip地址已经被链接到域上了。@nole,正如我在回答中所说的,你可以启动应用程序,它将从你定义的运行端口可用,即你的代码是
server.listen(8001)
,您说
node server.js
,然后它从该端口应答。@nole如果您想让多个节点应用程序监听您的设备,您必须使用某种vhost和代理。无论是侦听80并基于主机委派连接的主节点进程,还是处理传入连接的非常轻量级的代理,如nginx(如果您使用apache,我建议使用nginx)。@SamT谢谢。此外,我还尝试了您的方法将流量代理到Apache本身的节点应用程序,但它给出了一个内部服务器错误。原因可能是什么?apache这样做的原因可能有数百个。通常是因为配置不好。检查您的apache错误日志,看看发生了什么。