在端口 80 上运行页面的现有服务器上提供 Node.JS 应用

在端口 80 上运行页面的现有服务器上提供 Node.JS 应用

我在 www.example.com 有一个服务器,运行由 Apache 提供的 PHP 制作的网页,该页面正在监听端口 80。

现在我想在域名 www.example2.com 上提供我的 Node.JS。两个页面应该在同一台服务器上,Node.JS 应用程序应该在端口 3000 上运行。我如何实现这个目标?

来自其他答案和博客文章(例如这个:http://garr.me/blog/running-node-js-and-apache-together-using-mod_proxy/) 我了解到我可以创建一个 ReverseProxy 来将 www.example.com/app 重定向到我的应用程序,但这不是预期的行为。我想要的是这个新域名 www.example2.com 转到端口 3000 上的服务器 IP 地址。

附带问题:这个问题可能听起来很愚蠢,但是,我不能从 GoDaddy/Route53 的域名配置将整个域重定向到端口 3000 的服务器 IP 地址吗???

谢谢。

答案1

我解决了。原始问题的页面提供了很好的建议,但似乎并不完整。要实现此配置,请执行以下操作:

-在您的 Apache 文件夹中找到文件 httpd.conf(通常在 apache2/conf 上)。

-在末尾添加以下几行:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:80>
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName example2.com
  ServerAlias www.example2.com
  ProxyPass / http://localhost:3000/
  ProxyPassReverse / http://localhost:3000/
</VirtualHost>

-将占位符“example2”更改为您的实际域名(example2 是原始问题上的域名)

-重新启动 apache。

请注意,您可能需要通过将 LoadModule 行移动到实际加载模块的位置来稍微整理一下代码。

答案2

现在我想在域 www.example2.com 上提供我的 Node.JS。两个页面应该在同一台服务器上,Node.JS 应用程序应该在端口 3000 上运行。我该如何实现这一点?

有两个步骤。

  1. 您需要在 apache 中创建一个虚拟主机,监听 IP:3000 并响应对 example2.com 的请求
  2. 您需要运行 mod_proxy 来接收端口 80 上对 example2.com 的请求并将其推送到虚拟主机正在监听的 IP:3000。

我不能从 GoDaddy/Route53 的域名配置将整个域重定向到端口 3000 的服务器 IP 地址吗???

不。你不熟悉各种网络层,包括 DNS、TCP、IP 以及它们之间的所有内容。我建议读一本没有主题的小书。两遍。它会让你受益匪浅。=)

相关内容