更好的方法是啥:使用 Express 或 nginx 提供静态文件?

Posted

技术标签:

【中文标题】更好的方法是啥:使用 Express 或 nginx 提供静态文件?【英文标题】:What's the better approach: serving static files with Express or nginx?更好的方法是什么:使用 Express 或 nginx 提供静态文件? 【发布时间】:2017-12-01 10:31:33 【问题描述】:

我正在构建一个 Node.js 应用程序,并且我正在使用 nginx 作为反向代理。我的应用程序有一些我需要提供的静态文件和一个 Socket.io 服务器。

我知道我可以直接使用 Express 提供静态文件(使用 express.static 中间件)。我也可以将 nginx 直接指向我的静态文件所在的目录,这样它们将由 nginx 提供服务。

那么,问题来了:哪种方法更好?在使用每种方法时,我会面临哪些优缺点?

【问题讨论】:

@Dextication 不是重复的。 Express.js 和 Node.js 不一样。 【参考方案1】:

用于开发:express,主要是因为它提供了灵活性……您可以在开发过程中非常轻松地更改静态位置和结构

用于生产:nginx,因为它要快得多。 Node/express 非常适合执行逻辑,但对于提供原始内容......没有什么能比得上 nginx。您还可以获得其他功能,例如 gzip、负载平衡...

尽管如此,这个问题已经在 *** 中被问过很多次了:见

node.js itself or nginx frontend for serving static files? 或 Using Node.js only vs. using Node.js with Apache/Nginx 或 Which is most efficient : serving static files directly by nginx or by node via nginx reverse proxy?

【讨论】:

【参考方案2】:

The Express documentation explicitly recommends using a reverse proxy where possible。引用this article:

Nginx 可以更好地处理静态文件,并且可以防止对非动态内容的请求阻塞我们的节点进程。

有很多文章讨论了这个主题更详细,但我肯定会听取 Express 开发人员提出的建议。

【讨论】:

以上是关于更好的方法是啥:使用 Express 或 nginx 提供静态文件?的主要内容,如果未能解决你的问题,请参考以下文章

领域:创建(或发布)领域对象的更好方法是啥?

使用 express 提供静态文件的最简单方法是啥?

使用 Angular 和 Express 登录用户的正确方法是啥?

为文字处理器存储文本的更好方法是啥?

MongoDB 或 PostGreSQL 使用 Python Django 和 Express 和 Node js 会更好 [关闭]

在 PowerShell 中忽略输出的更好(更清洁)方法是啥? [关闭]