【问题标题】:How to configure my node.js application on a dedicated server to put it online?如何在专用服务器上配置我的 node.js 应用程序以使其联机?
【发布时间】:2014-10-14 11:45:25
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 奖励信息:PHP 实际上并没有在 80 上运行,您的 Apache 服务器可以。 Apache 通过 CGI(现在是 FastCGI)与您的 PHP 脚本(通常)“通信”。如果您运行 PHP-FPM 而不是 CGI,那么您将配置一个反向代理以在端口 9000 上与 PHP-FPM 通信(默认情况下)。
  • 感谢您的信息。

标签: javascript node.js port


【解决方案1】:

在 apache 中,创建一个新的虚拟主机。您必须通过 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>

【讨论】:

  • 有没有办法在没有 Apache 的情况下托管应用程序,因为无论如何我都会卸载它。我想要实现的是当我打开example.com:[PORT] 时,它将运行我的节点应用程序,最终在不同的端口上运行多个节点应用程序。注意:如果这很重要,我的服务器 IP 地址已经链接到域。
  • @nole,正如我在回答中所说,您只需启动应用程序,它就可以从您定义它运行的端口获得,即。你的代码说server.listen(8001);,你说node server.js,然后它从那个端口回答。
  • @nole 如果您打算让超过 1 个节点应用程序在您的机器上监听,您必须使用某种虚拟主机和代理。无论是监听 80 并基于主机委托连接的主节点进程,还是像 nginx 这样的非常轻量级的代理(如果您使用 apache,我建议您使用它)来处理传入的连接。
  • @SamT 谢谢。此外,我已经尝试过您的方法将流量代理到 Apache 本身的节点应用程序,但它给出了内部服务器错误。可能是什么原因?
  • Apache 这样做的原因可能有数百个。通常是由于配置不当造成的。检查您的 apache 错误日志以了解情况。
【解决方案2】:

如果您不在基于名称的虚拟主机环境中,您只需启动您的 Node.js 服务器,它就会从定义的端口向全世界提供。但是,如果服务器 IP 地址使用不同的域名运行许多服务,并且您希望 Node.js 服务器仅从 http://example.com:8001 回复,您可以使用例如节点服务器上的 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 响应,除了您已经使用的 80 之外,您还需要将 Web 服务器绑定到端口 8001,然后运行您的其他端口上的 Node.js 服务器。

通常人们更喜欢使用标准 HTTP 端口,并使用 Web 服务器将代理流量反向到运行在非特权端口上的 Node.js 服务器。由于您的域名上已经有 PHP 应用程序,因此您将遵循 @SamT 的建议并从例如运行您的 Node.js 应用程序。 http://mynodeapp.example.com

【讨论】:

    猜你喜欢
    • 2017-10-19
    • 2021-12-17
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多