我正在构建一个Node.js应用程序,并使用nginx作为反向代理。我的应用程序有一些静态文件需要服务和一个Socket.io服务器。
我知道可以使用Express(使用express.static中间件)直接提供静态文件。此外,我也可以直接将nginx指向我的静态文件所在的目录,以便nginx来提供服务。
那么问题来了:哪种方法更好?当使用每种方法时,可能会面临哪些优缺点呢?
我正在构建一个Node.js应用程序,并使用nginx作为反向代理。我的应用程序有一些静态文件需要服务和一个Socket.io服务器。
我知道可以使用Express(使用express.static中间件)直接提供静态文件。此外,我也可以直接将nginx指向我的静态文件所在的目录,以便nginx来提供服务。
那么问题来了:哪种方法更好?当使用每种方法时,可能会面临哪些优缺点呢?
开发时使用express,主要是因为它提供的灵活性...您可以在开发期间非常容易地更改静态位置和结构
生产环境中使用nginx,因为它更快。Node.js/express适合执行逻辑,但对于服务于原始内容...没有什么能比得上nginx。您还可以获得其他功能,例如gzip、负载平衡...
尽管如此,这个问题已经在stackoverflow上被问过很多次了:请参见
Express文档明确建议在可能的情况下使用反向代理。引用这篇文章的话:
Nginx可以更好地处理静态文件,防止非动态内容的请求阻塞我们的节点进程。
有很多文章讨论这个主题,深入探讨了这个问题,但我肯定会遵从Express开发人员的建议。