我正在使用带有restify框架的node.js启动一个REST服务器。 因此,将没有静态页面。 但是,ssl(https)将是必需的。 把http服务器放在一个地方或者是一个不必要的复杂的东西是一个好主意?
我认为NodeJS(或者ruby,或者python,或者perl,…)不是一个web服务器(不pipeexpress.js,socket.io等库是否可怕),也不能与nginx,apache,lighttpd …竞争,至less在可靠性方面。
运行NodeJS服务,我会推荐使用:
nginx服务于HTTPS(您的HTTP标头,CSP策略…) PM2驱动您的NodeJS进程(您可以将它们集群化,集群进程可以以缩短服务中断的方式重新加载,…) 再次,使用NodeJS作为前端并不罕见 。
这个问题不容易回答。 实际上这一切都取决于你的个人需求。 在您的环境中添加另一个组件可能会为您提供更多的灵活性和可扩展性(您可能不需要),以获取可能的维护,许可或支持成本,function,可用性以及不可用的成本。
从技术上说,你既可以使用tls的Node.js包来进行encryption处理,也可以让nginx为你处理这个请求,并在需要时将请求代理到node.js。
在我看来,没有确定的“正确的”或“错误的”。 你应该比较优点和缺点,并根据你的看法得出结论。
如果我要设置这样的东西,我想我宁愿把nginx放在中间。 安装起来非常简单,一方面不会为这么小的工作消耗太多的资源(所以开销不会太大),另一方面,您还可以获得更多的灵活性(例如,为静态内容提供服务例如直接的图像,额外的未来实例之间的负载平衡或仅通过node.js服务于单个域)。
但是,如果您想要最简单的设置并尽量减less将来的维护(例如,安装代理的新版本),您可以采取另一种方式。