You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22 Server上Nginx access.log快速占满磁盘空间的问题咨询

Ubuntu 22 Server上Nginx access.log快速占满磁盘空间的问题咨询

兄弟,我太懂你这种日志疯狂涨满磁盘的崩溃感了!其实你的部署流程(Node.js+Nginx反向代理+UFW+SSL)没什么大问题——网站能正常跑就说明核心配置是对的,这些爆涨的日志全是公网环境里的恶意扫描、垃圾爬虫和代理探测请求,几乎所有暴露在公网的服务器都会遇到这种情况,咱们一步步解决:

先搞清楚问题根源

看你贴的日志片段,这些请求全是无关的:

  • 有人在尝试用你的服务器当代理跳板(那些CONNECT请求)
  • 垃圾爬虫在扫公网IP,乱请求第三方域名(比如www.168mu.cn、baidu.com)
  • 这些都不是针对你网站的真实访问,纯粹是公网扫描器在瞎折腾

解决方案分三步走

1. 紧急止损:用日志轮转代替手动删日志

别再手动截断日志了,Ubuntu自带的logrotate能自动帮你压缩、轮转日志,避免无限膨胀:

  • 编辑Nginx的日志轮转配置(一般默认就有,检查下):
    sudo nano /etc/logrotate.d/nginx
    
    确保配置类似这样:
    /var/log/nginx/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        postrotate
            [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
        endscript
    }
    
    简单解释:每天自动轮转日志,保留最近14天的压缩日志,还会自动通知Nginx重新生成日志文件,不会影响服务。
  • 现在手动执行一次轮转立刻生效:
    sudo logrotate -f /etc/logrotate.d/nginx
    

2. 过滤垃圾请求:不让它们写入日志

在你的Nginx站点配置文件(比如websitname.com.conf)里加规则,直接拦截这些垃圾请求,并且不记录到日志里:

server {
    # 先保留你原有的listen、ssl、proxy_pass等配置
    # 新增下面的过滤规则:

    # 只允许你自己的域名作为请求Host,拦截其他乱填的Host
    if ($host != 'www.yourdomain.com' && $host != 'yourdomain.com') {
        return 444; # Nginx特有的返回码,直接关闭TCP连接,不写日志
    }

    # 拦截CONNECT请求(代理探测)
    if ($request_method = CONNECT) {
        return 444;
    }

    # 拦截请求第三方网站的爬虫(比如日志里带http://的请求)
    if ($request_uri ~* http://) {
        return 444;
    }
}

配置完重启Nginx生效:

sudo systemctl restart nginx

3. 强化防护:限制恶意IP的请求频率

  • 临时拉黑日志里疯狂扫描的IP(比如51.15.188.226):
    sudo ufw deny from 51.15.188.226 to any
    
  • 用Nginx的速率限制模块,防止单IP短时间内刷大量请求:
    在Nginx的http块里添加:
    http {
        # 定义一个速率限制规则:每个IP每秒最多5个请求,用10M内存存IP信息
        limit_req_zone $binary_remote_addr zone=scan_limit:10m rate=5r/s;
    
        server {
            # 在你的站点server块里应用这个规则
            limit_req zone=scan_limit burst=10 nodelay;
        }
    }
    
    这样能把疯狂扫你的IP给限流,既减少日志量也降低服务器负载。

最后总结

这些问题是公网服务器的常态,不是你的部署错误——只要把服务器暴露在公网,就会被各种扫描器盯上。按照上面的步骤操作,日志膨胀的问题应该能彻底解决,先做日志轮转止损,再过滤垃圾请求,最后加防护,一步步来就好。

备注:内容来源于stack exchange,提问作者Albert Einstein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:13:09