【发布时间】:2020-03-24 03:46:53
【问题描述】:
在典型的 python 服务器设置中,建议让 Nginx Web 服务器提供静态内容并将动态请求代理到 Gunicorn 应用服务器。 现在,如果我不通过我的 python 应用程序提供任何静态内容,我还需要在 Gunicorn 前面使用 Nginx 吗?会有什么优势? 非常感谢详细的解释。
所有静态内容都通过 CDN 提供,后端服务器只需要提供 API(REST)。所以当我只提供动态内容时,我需要 Nginx 吗?在高负载等情况下有什么优势吗?
【问题讨论】:
-
通常你会这样做,如果你想公开一个最小的 API 用于开发目的,如果你提供一个完整的 Web 应用程序,你迟早需要提供静态文件,除此之外,你例如,如果您的计划是为小型 TCP 服务器提供服务,则可以忽略 Gunicorn。
-
@AlejandroVicaria 我指的是完全生产模式。实际上所有的静态内容都是通过 CDN 提供的,后端服务器只需要提供 API(REST)。所以当我只提供动态内容时,我需要 Nginx 吗?在高负载等情况下有什么优势吗?
-
根据我的经验,虽然使用 nginx 在技术上是最佳实践,但您并不需要它。我猜 nginx 更擅长处理来自世界的传入请求,而 gunicorn 更擅长为您的应用程序提供服务。但实际上,您的系统架构的其余部分应该足够了,您不仅仅依赖于这些因素。例如,在高负载的情况下,您可以让更多的应用程序实例在负载均衡器后面运行。不要给自己更多的维护。
-
如果您使用 SSL/TLS,我建议您使用 nginx,因为它比任何 python 库都经过了更多的实战测试,而且它可能效率更高。如果没有,那么您不必这样做,但不建议使用 SSL/TLS
标签: python django nginx django-rest-framework gunicorn