我在域下有一个网站(比如example.com),该网站托管在Amazon Web Services EC 2实例上,该实例已安装Apache并准备在端口80上运行。现在我希望从Apache转移到节点JS(其中)节点JS在另一个端口上运行,比如8001)。如何更改EC 2的HTTP端口地址,说当我转到该URL(example.com)时,它应该在节点JS而不是Apache上运行(而对于临时,节点JS)在example.com:8001上运行。 怎么可能和亲切的帮助?
答案 0 :(得分:2)
因此,您无法将标准Web地址(例如www.example.com)指向端口80以外的任何其他位置。默认情况下,http位于端口80上,https位于端口443上。您可以通过显式提供端口来覆盖该默认值但你不能改变那个默认值。
所以你的选择是:
将Apache替换为端口80上的节点。这将涉及关闭Apache(并确保它在重新启动时不会自动重启),并将节点端口更改为端口80.这也可能需要运行您的作为root的节点服务(因为端口80通常受到保护)并且不建议这样做(Apache以root身份启动以获取端口,但通常会立即切换到非root用户)。
让Apache代理向Node转发请求。这意味着Apache仍然是您的主要Web服务器并侦听端口80,但某些请求将发送到节点。
第二个选项可以使用mod_proxy和config这样完成:
ProxyPass "/foo" "http://localhost:8001/"
ProxyPassReverse "/foo" "http://localhost:8001/"
这完全取决于您想要使用的设置,并充分利用您可以使用的软件。
典型设置是一种涉及以下一个或多个的多层方法:
是的,您只能将Node用于所有这些图层。但是,对我来说,它更像是一个应用服务器,而不是一个网络服务器。
像Apache或Nginx这样的网络服务器专门设计为像网络服务器一样,我的意思是服务静态页面和做其他顶级的东西。它们具有多年来积累的多种功能,可提供速度和安全性。现在几乎所有他们可以做的事情都可以在Node中完成,但不是那么容易而且不是标准的,并且通常需要引入第三方模块。
然后,网络服务器通常会将动态工作卸载到其他程序。这可以是脚本(PHP或Perl),也可以是单独的应用服务器,如Tomcat,Jboss或Node。这些通常非常擅长于特定任务(例如与数据库交谈并生成动态页面),但不太能快速切断静态页面。
对我而言,节点的美妙之处在于微服务,在这里你可以拥有许多独立但可能相互关联的节点服务,这些服务都是轻量级的,擅长于一项任务,并且仍然需要Web服务器。相比之下,您将在过去尝试使用Tomcat或Jboss这样的庞大的多任务J2EE服务器尝试在一个进程下执行每个动态应用程序(尽管通常在单独的WAR文件下)。因此,在不知道您的完整用例的情况下,我建议使用Apache 和节点而不是Node替换Apache。