如何配置 access_log 联动本地 Syslog 服务实现核心安全路径访问数据与状态码的实时秒级异地脱水备份

夜丽小哥_3697

夜丽小哥_3697

2026-06-18

944人浏览

原创

nginx通过原生syslog模块将脱水后的安全日志(仅含高危路径与关键状态码组合)发送至本地rsyslog,再分流落盘+异地转发,实现秒级、不丢、可筛选的备份。

如何配置 access_log 联动本地 syslog 服务实现核心安全路径访问数据与状态码的实时秒级异地脱水备份

直接把 Nginx 的 access_log 推给本地 Syslog 服务,实现秒级、不丢、可筛选的异地脱水备份,关键不在“怎么连”,而在“连得准、筛得细、传得稳”。下面分四块说清楚:

一、先让 Nginx 支持原生 Syslog 输出

确认你的 Nginx 编译时启用了 --with-http-syslog-module:

nginx -V 2>&1 | grep syslog

没输出?得重编译或换发行版(如 OpenResty 默认带)。
有输出,才能在 server 块里写:

access_log syslog:server=127.0.0.1:514,facility=local6,tag=nginx_sec,severity=info;

注意:server=127.0.0.1 是指本地 Syslog 服务(如 rsyslog),不是远程;tag 用于后续分流识别。

二、只录核心安全路径与关键状态码(脱水第一步)

别全量打日志。用 map 提前标记高危行为,再用 if 控制是否记录:

# 在 http 块中定义
map $request_uri $is_sec_path {
    ~*/admin/|/api/v1/user/login|/wp-login.php "1";
    default "0";
}
map $status $is_alert_code {
    ~^(403|404|500|502|503)$ "1";
    default "0";
}
# 定义一个复合条件变量
map "$is_sec_path:$is_alert_code" $log_sec {
    "1:1" "1";  # 同时命中路径+状态码才记
    "1:0" "0";
    "0:1" "0";
    default "0";
}

然后在 server 块中启用条件日志:

access_log syslog:server=127.0.0.1:514,facility=local6,tag=nginx_sec,severity=info if=$log_sec;

这样只有 /admin/ 返回 500,或 /wp-login.php 返回 403 这类组合才会进 Syslog——真正实现“脱水”。

Yarn - Control and Access Threads.com via the CLI
Yarn - Control and Access Threads.com via the CLI

通过 yarn-threads-cli 与 Threads(Meta)交互。当用户想要阅读首页动态、点赞、收藏的帖子或特定帖子时使用;查看...

下载

三、本地 Syslog 服务(如 rsyslog)精准分流与落地

确保 rsyslog 启用了 UDP/TCP 监听(/etc/rsyslog.conf):

module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")

再建规则文件 /etc/rsyslog.d/20-nginx-sec.conf:

# 匹配 nginx_sec 标签 + local6 设施的日志
if $syslogtag == 'nginx_sec:' and $syslogfacility-text == 'local6' then {
    # 写入独立文件(带时间戳滚动)
    action(type="omfile" file="/var/log/nginx/sec_access_$(date -d @%timereported:date-hour%).log"
           template="RSYSLOG_FileFormat")
    # 同时转发到远端 Kafka 或 Loki(异地备份)
    action(type="omkafka" topic="nginx_sec" broker=["192.168.100.20:9092"])
    stop
}

这样既本地落盘(小时级切片),又实时发往异地分析平台,双保险。

四、验证与防丢保障

  • 防丢:Syslog TCP 比 UDP 更可靠,建议把 access_log 改为 syslog:server=127.0.0.1:514,tcp,...;rsyslog 端加 RebindInterval="60" 防连接中断。
  • 验证:手动触发一次 /admin/ 403,立刻查:
    tail -f /var/log/nginx/sec_access_$(date +%Y%m%d-%H).log
    # 或查 rsyslog 转发是否成功
    journalctl -u rsyslog | grep nginx_sec
  • 压测兜底:单 IP 短时请求超 100 次/秒时,Nginx 自身 buffer 可能溢出,建议加:
    access_log ... buffer=64k flush=1s;

    避免 burst 流量冲垮缓冲。

不复杂但容易忽略。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

383

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3207

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

5865

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

561

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1476

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3938

3

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

122

12

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

437

23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

2026.03.16

159

12

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习