我在 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 上运行。我该如何实现这一点?
有两个步骤。
- 您需要在 apache 中创建一个虚拟主机,监听 IP:3000 并响应对 example2.com 的请求
- 您需要运行 mod_proxy 来接收端口 80 上对 example2.com 的请求并将其推送到虚拟主机正在监听的 IP:3000。
我不能从 GoDaddy/Route53 的域名配置将整个域重定向到端口 3000 的服务器 IP 地址吗???
不。你不熟悉各种网络层,包括 DNS、TCP、IP 以及它们之间的所有内容。我建议读一本没有主题的小书。两遍。它会让你受益匪浅。=)