在什么情况下,人们是否应该仅将Node.js用作实际部署中的服务器?
当一个人不希望只使用Node.js的,有什么用Node.js的发挥更好?Apache还是Nginx?
pau*_*ljz 192
有几个很好的理由在Node.js前面粘贴另一个Web服务器:
我会告诉你第二个要点你应该通过CDN或者像Varnish这样的缓存服务器提供静态文件.如果你这样做,那么起源是Node还是Nginx或Apache并不重要.
特别注意nginx:如果你正在使用websockets,请确保使用最新版本的nginx(> = 1.3.13),因为它只是添加了对升级连接以使用websockets的支持.
Mat*_*ant 65
为了给pauljz的答案增加一个理由,我使用前端服务器,这样当我重新启动后端服务器时它可以提供502个错误页面,或者由于某种原因它崩溃了.这使您的用户永远不会收到有关无法建立连接的错误.
小智 25
我相信只要你知道自己在做什么,使用Node来提供静态文件就可以了.它当然是使用应用程序服务器提供静态文件的新范例,因为许多(每个?)竞争技术(PHP,Ruby,Python等)需要在应用程序服务器前面使用HTTPD或Nginx等Web服务器.
我曾经阅读过的每一个客观原因都反对使用Node提供静态文件,这一理由围绕着使用您最了解的内容或使用被认为更好测试/更稳定的内容的想法.实际上,这些是非常有效的原因,但几乎没有技术上的相关性.
除非您发现使用Node无法实现的经典Web服务器的功能(我怀疑您会这样做),否则请选择您最了解的内容或您更喜欢使用的内容,因为这两种方法都可以.
至于Nginx和Apache - 他们将与Node"玩"相同.您应该比较它们而不考虑Node.
Đăn*_*inh 15
Node.js 可以完成 Web 服务器的所有任务:提供静态文件、响应 API 调用、在 HTTPS 上运行服务器...还有很多包提供额外的功能,例如记录请求、压缩响应、设置 cookie、防止 XSS 攻击...缺乏功能不太可能是使用其他 Web 服务器(Apache/Nginx/etc..)来完成 Node.js 的原因。换句话说,对于不需要扩展的简单应用程序,不需要向 Node.js 添加额外的层,这只会让问题变得复杂。
每个网络服务器都有自己的优点。例如,Apache 允许通过 .htaccess 文件对每个目录进行附加配置。Nginx 在提供静态文件或充当反向代理方面以其性能而闻名。Node.js 在处理 I/O 繁重的系统时提供了巨大的好处...有时,我们需要结合不同 Web 服务器的力量来满足系统的要求。
示例:对于未来可能扩展的企业级应用程序,在 Node.js 应用程序之前设置 Nginx 作为反向代理具有一些优势:
小智 8
将 NGINX 放在 Node 前面有助于更好地处理高连接量。NGINX 提供(仅举几例) 缓存、负载平衡、速率限制(使用漏桶算法),如果与 Fail2ban 等禁止服务配合使用,可以帮助减轻攻击。
对于生产应用程序,您可以将应用程序服务器作为反向代理运行在 NGINX 后面,再加上像 Redis 这样的缓存服务器,所有这些服务器都可以位于内容交付网络后面,作为防止暴露 ipv4/ipv6 的另一道防线。
额外:如果您需要反向代理,例如在同一端口上执行 Websocket 服务器,或者混合一些技术(使用 NodeJS 回复一些请求,使用 PHP 回复其他一些请求或其他),这一点也很重要
归档时间: |
|
查看次数: |
78829 次 |
最近记录: |