我注意到,当有人向 Nginx 代理的 Apache 网站发送大文件时,Nginx 机器上的磁盘使用率会上升。当有人上传的文件比 Nginx 机器的磁盘大小大时,这种情况尤其明显。这引出了一个显而易见的问题 - 如果有人上传了 500gb 的文件,而 Nginx VM 只有 10gb 驱动器,该怎么办?考虑到我们用于发送 VM 映像(.vmdk 或 .ova 文件)的私有云通常有 10+ GB,这并不是那么抽象的场景。
我已经在使用:
proxy_buffering off;
proxy_no_cache 1;
在 http 范围内。但它似乎不会影响已上传的文件(仅影响已下载的文件)。是否可以禁用 POST 缓存?
答案1
nginx 默认不会在其代理缓存中缓存任何内容。它甚至没有对其进行配置。因此,如果您已对其进行配置并且已配置缓存,则应该知道如何禁用它,这并不是讽刺:既然您要求这样做 - 您的磁盘使用量可能会由于上述原因以外的其他原因而增加;而不是由于缓存。Nginx 可以在磁盘上缓冲过多的 POST 数据,但传输结束后会立即删除这些数据。
另一种可能的情况是 - 您有一个其他人配置的 Web 服务器。那么您应该检查proxy_cache <zonename>
指令。但我怀疑后者是否有效。
您可以通过发出一系列du -h -d 1 /
命令来轻松确定磁盘消耗情况,并/
在每次迭代中用更具体的感兴趣的路径进行替换。