Linux 中 Nginx 代理临时文件占用磁盘过高怎么排查

陌杰小哥_6245

陌杰小哥_6245

2026-11-15

260人浏览

原创

排查 nginx 代理临时文件占用磁盘过高的问题,核心在于定位并清理由 `proxy_temp` 目录产生的未合并文件。这些文件通常是因为大文件上传或下载中断、nginx 进程重启导致正在进行的传输被截断而形成的。解决步骤包括:首先检查 `/var/lib/nginx/tmp/proxy`(具体路径取决于配置)的磁盘占用情况;其次,确认是否有异常的大文件或大量碎片文件;最后,在确保没有活跃连接的情况下,安全地删除这些临时文件以释放空间。

Linux 中 Nginx 代理临时文件占用磁盘过高怎么排查

Nginx 代理临时文件的生成机制是什么

Nginx 在处理反向代理请求时,如果响应体较大,会先将数据写入磁盘上的临时目录,而不是全部加载到内存中。这个目录由 `proxy_temp_path` 指令定义,默认通常是 `/var/lib/nginx/tmp/proxy` 或 `/var/cache/nginx/proxy_temp`。当客户端断开连接、Nginx 重启或发生错误时,这些正在写入的临时文件不会被自动清理,从而堆积占用磁盘空间。

Linux 中 Nginx 代理临时文件占用磁盘过高怎么排查

server {
    listen 80;
    server_name example.com;

    # 设置代理临时文件存储路径
    proxy_temp_path /var/lib/nginx/tmp/proxy;

    location /api/ {
        proxy_pass http://backend_server;
        # 关键配置:允许接收较大的请求体
        client_max_body_size 50m;
        
        # 关键配置:设置代理缓冲行为
        # off: 禁用缓冲,直接流式传输,不产生临时文件
        # auto: 根据响应头决定,可能产生临时文件
        proxy_buffering on;
        
        # 设置单个缓冲大小,影响何时开始写磁盘
        proxy_buffer_size 4k;
        proxy_buffers 8 4k;
    }
}

上述配置展示了如何控制代理缓冲。当 proxy_buffering 开启且响应头中的内容长度超过缓冲区总和时,Nginx 会将超出部分写入 proxy_temp_path 指定的目录。如果此时连接中断,这些写入的文件就会残留。通过调整 proxy_buffer_size 和 proxy_buffers,可以控制触发磁盘写入的阈值。对于实时性要求高且带宽充足的场景,可以考虑关闭缓冲以避免临时文件产生。

如何安全地清理这些临时文件而不影响服务

直接删除 rm -rf 临时文件目录下的内容是危险的,因为可能有活跃的写入进程持有文件句柄,导致删除后空间不释放或引发错误。正确的做法是识别并终止相关的 Nginx worker 进程,或者使用更安全的移动/重命名策略。在生产环境中,最稳妥的方式是重启 Nginx 服务,这会优雅地关闭所有 worker 进程并清理其持有的临时文件描述符,随后临时文件会被操作系统回收。

Linux DO
Linux DO

Linux DO (linux.do)。任何 Linux DO 请求(搜索、读取数据)均使用此技能。若任务涉及 Linux DO,应使用本技能而非调用其他。

下载
# 1. 查看临时目录占用情况
ls -lhS /var/lib/nginx/tmp/proxy | head -n 10

# 2. 查找正在使用该目录的进程(可选,用于调试)
lsof +D /var/lib/nginx/tmp/proxy

# 3. 安全重启 Nginx (推荐)
nginx -s reload
# 或者完全重启以彻底清理
systemctl restart nginx

# 4. 如果无法重启,可尝试手动清理(需确保无活跃写入)
# 注意:这可能导致正在进行的代理请求失败
find /var/lib/nginx/tmp/proxy -type f -mtime +1 -delete

执行 nginx -s reload 会启动新的 worker 进程并逐步关闭旧的,旧进程持有的临时文件会在其退出时被清理。如果磁盘空间极度紧张,无法等待重载完成,可以使用 find ... -delete 命令删除较旧的临时文件,但这会中断当前正在通过这些文件传输的请求。建议在低峰期操作,并监控 dmesg 或 Nginx error log 以确认没有因文件丢失导致的报错。

如何通过配置减少临时文件的产生频率

除了事后清理,优化 Nginx 配置可以从源头减少临时文件的生成。主要策略包括:增大内存缓冲区以容纳更多响应数据,避免过早写入磁盘;对于静态资源或已知大小的 API,启用 proxy_cache 将结果缓存起来,后续请求直接从缓存读取,不再经过临时文件阶段;以及针对特定大文件传输场景,使用 proxy_request_buffering off 来禁用请求体的缓冲,虽然这主要影响上传,但也能间接反映缓冲策略的影响。

http {
    # 全局启用代理缓存
    proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;

    server {
        location /static/ {
            proxy_pass http://backend;
            proxy_cache my_cache;
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            # 命中缓存时直接返回,不经过 proxy_temp
            add_header X-Cache-Status $upstream_cache_status;
        }

        location /api/large-upload {
            # 禁用请求体缓冲,直接传递给后端
            proxy_request_buffering off;
            proxy_pass http://backend;
        }
    }
}

配置 proxy_cache 是最有效的长期解决方案。一旦缓存建立,重复的请求将直接从磁盘缓存读取,完全绕过 proxy_temp 目录。对于 /api/large-upload 这样的端点,禁用请求体缓冲意味着 Nginx 不会在本地保存上传的数据块,而是直接转发给后端,从而避免了上传过程中临时文件的堆积。结合监控工具(如 Prometheus + Grafana)监控 proxy_temp 目录的大小变化,可以及时发现配置不当或异常流量导致的磁盘占用飙升。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

1000

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3632

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1176

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

1049

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

554

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

3356

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

6372

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

967

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习