在我提问的过程中发送大型请求时,生产服务器比本地测试服务器慢得多我正在尝试更深入地了解 Web 服务器(尤其是 nginx)的实际功能。基本上,我想更好地理解我长期以来认为理所当然的架构。也许这微不足道,但请听我说完...
我正在使用 nginx 和 gunicorn 运行 django 应用程序,并向服务器发送后续请求。由于我想了解我的性能问题出在哪里,所以我想详细了解我的请求是如何被处理的。
所以我通过库发送了一个 POST 请求requests
。据我所知,互联网上发送的所有数据都使用 -protocol HTTP
,所以基本上我发送的数据是以文本格式传输的。对吗?根本没有对 python 对象/数据结构的代码解释?那么到达 nginx 的请求的大小只是转换为文本格式的请求的大小?
当我进一步理解这一点时,nginx 现在以文本格式接收此请求,然后决定如何处理此请求...它将此请求转发到我的 Web(django)应用程序(或者更好:我的后端服务器),我的代码正在其中执行,数据在其中写入数据库。
那么 nginx 是否只转发请求?还是还会做其他事情?
然后代码或数据库抛出错误或向 nginx 返回成功消息,nginx 将其作为服务器输出返回(如 404 或 405 或 201 或任何代码...)。
所以我的问题是:nginx 如何处理这些 API 请求以及如何解释它们?
答案1
nginx 只是将请求转发到您的后端服务器。除了与客户端协商的压缩之外,它不会对数据执行任何其他操作。
99% 的情况下,nginx 中没有什么可以显著影响性能的东西。需要分析实际的应用程序是否存在性能问题。