更好的方法是啥:使用 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 提供静态文件?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Angular 和 Express 登录用户的正确方法是啥?
MongoDB 或 PostGreSQL 使用 Python Django 和 Express 和 Node js 会更好 [关闭]