我一直在配置我的CentOS VPS,以便使用node.js为移动应用程序托管各种服务。
通过我的所有研究,我确信我现在可以设法为一个应用程序部署node.js服务器,但是如何在服务器上分离所有通过端口80的服务?
我考虑过为每个应用程序使用不同的端口,因此端口3000将是mobileApp1,端口30001将是mobileApp2,但在阅读了几篇帖子后我得出结论这是一个坏主意。主要是因为大多数防火墙都配置为允许连接到端口80,最终我可能想要创建使用与移动客户端相同的Web服务的站点。
我发现site建议使用代理如下:
var http = require('http')
, httpProxy = require('http-proxy');
httpProxy.createServer({
hostnameOnly: true,
router: {
//web-development.cc
'www.my-domain.com': '127.0.0.1:3001',
'www.my-other-domain.de' : '127.0.0.1:3002'
}
}).listen(80);
我如何支持可以从移动应用程序或我的某个网页调用的各种Web服务,并将它们全部通过端口80?
答案 0 :(得分:0)
是的,您可以将节点用作代理并使其在端口80上运行,根据URL将请求路由到各种节点应用程序,或者您可以在端口80上运行Web服务器,并让它将请求路由到您的节点应用程序节点内有很多代理选项,所以从这里开始,我们会更多地了解你应该使用哪些代理选项。一个选项我已成功使用了沃尔玛用于将请求路由到其应用程序服务器的Web框架Hapi。 Here's some documentation on how they used Hapi to proxy requests.
另一个可能更常用的选项是在端口80(和443)上使用Apache或Nginx等Web服务器,并根据URL将请求路由到应用程序服务器。有很多关于如何设置它的文档,因为这是人们用来路由请求的很多。我总结了一个要点,以帮助记住如何设置一个简单的nginx服务器,将基于域的请求路由到单独的节点应用程序,您可以在这里找到:https://gist.github.com/dylants/8609050。 (请注意,要点是希望在这些连接上启用SSL,但希望能给你一个想法。)
但是在高层次上,在不同端口上的同一台机器上运行多个节点应用程序是很好的(而且非常正常)(我粘贴的主要内容是用于执行此操作的环境)。然后,您可以限制在这些端口(例如3000,3001,3002等)上访问外部世界,并且仅允许在端口80和443上访问。然后让您的Web服务器在端口80和443上运行,并将请求路由到那些端口在端口3000,3001等上运行的节点应用程序
使用这些Web服务器的好处是,一旦您了解了基础知识,它们就会变得非常简单,并且在此之后运行时几乎不需要太多维护。你最初可能不得不做一些研究,但最终还是值得的。希望有所帮助:)