讲师中心 微信公众号
AI工具推荐 视频效率加速

如何利用 rsyslog 结合 Nginx 实现日志的加密传输与中心化存储

大瑶酱_2366

大瑶酱_2366

发布时间:2026-05-07 17:08:25

|

442人浏览过

|

来源于php中文网

原创

rsyslog可通过TLS加密转发Nginx日志实现安全集中管理:Nginx经pipe或syslog输出至本地rsyslog,后者启用gtls模块、证书及6514端口TLS转发,服务端监听并按facility/IP分类存储,需验证模块加载、证书权限、防火墙及时间同步。

如何利用 rsyslog 结合 nginx 实现日志的加密传输与中心化存储

rsyslog 可以通过 TLS 加密将 Nginx 日志转发到远程日志服务器,实现安全、集中化的日志管理。关键在于:Nginx 本身不直接支持 TLS 发送日志,需借助 pipe 或 syslog 模块配合 rsyslog 的输入/输出能力完成衔接;加密依赖 rsyslog 的 TLS 配置,中心化则依赖 rsyslog 的转发与接收角色分工。

一、让 Nginx 日志进入 rsyslog 管道

Nginx 支持将 access_log 和 error_log 输出到 syslog 设施(如 local7),但默认不加密。更可控的方式是使用 pipe 将日志行实时喂给 rsyslog 的本地 Unix socket 或 TCP 输入端口。

  • 在 /etc/nginx/nginx.conf 中配置:
access_log pipe:/var/run/nginx-logs.pipe main;

然后创建命名管道并设置权限:

mkfifo /var/run/nginx-logs.pipe
chown nginx:adm /var/run/nginx-logs.pipe

再配置 rsyslog 从该管道读取(需启用 imfile 模块):

# /etc/rsyslog.d/10-nginx-pipe.conf
$ModLoad imfile
$InputFileName /var/run/nginx-logs.pipe
$InputFileTag nginx-access:
$InputFileStateFile nginx-access-state
$InputFileSeverity info
$InputFileFacility local7
$InputRunFileMonitor on

二、配置 rsyslog 启用 TLS 加密转发

rsyslog 使用 omfwd 模块 + TLS 参数向远端服务器发送日志。需提前准备证书(CA、客户端证书+私钥)。

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
  • 确保已安装并启用 gtls 支持(Debian/Ubuntu 默认含,RHEL/CentOS 可能需 rsyslog-gnutls 包)
  • 在转发配置中指定 TLS 参数:
# /etc/rsyslog.d/20-nginx-forward.conf
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/client.crt
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/client.key
*.info;local7.info @@(o)log-server.example.com:6514 # (o) 表示启用 TLS

注意:@@ 是 TCP 协议,@ 是 UDP(不支持 TLS);(o) 是旧语法兼容标记,新版本推荐用 tcp_framing="octet-counted" 配合 tls="on"。

三、中心日志服务器端配置(接收 + 存储)

中心服务器需运行 rsyslog 并启用 TLS 监听,按来源或 facility 分类写入不同文件。

  • 加载 TLS 输入模块并监听:
# /etc/rsyslog.d/30-server-tls.conf
$ModLoad imtcp
$ModLoad gtls
$InputTCPServerRun 6514

# TLS 配置
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/server.crt
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/server.key

# 允许来自 Nginx 主机的连接(可选 IP 过滤)
$InputTCPServerStreamDriverAuthMode x509/name
$InputTCPServerStreamDriverPermittedPeer nginx-client.example.com
  • 按 facility 路由并写入结构化路径(例如按天归档):
# /etc/rsyslog.d/40-storage.conf
template(name="NginxDailyFile" type="string" string="/var/log/central/nginx/%FROMHOST%/%$YEAR%-%$MONTH%-%$DAY%.log")
if $syslogfacility-text == 'local7' then ?NginxDailyFile & stop

四、验证与常见问题处理

调试阶段建议分步确认各环节是否生效:

  • 检查 Nginx 是否成功写入管道:echo "test" > /var/run/nginx-logs.pipe && tail -n1 /var/log/syslog
  • 查看 rsyslog 是否加载了模块:rsyslogd -v | grep -i tls
  • 抓包验证加密:tcpdump -i any port 6514 -w tls.pcap,用 Wireshark 打开应看不到明文日志
  • 若连接被拒绝,检查防火墙、SELinux(RHEL)、服务端证书 CN 是否匹配客户端所连域名
  • 时间不同步会导致 TLS 握手失败,确保所有节点 NTP 同步

不复杂但容易忽略:Nginx 的 pipe 写入是阻塞式,若 rsyslog 崩溃或管道未被读取,Nginx 可能卡住 —— 生产环境建议加 buffer 或改用 syslog + omfwd 组合,并监控管道状态。

热门AI工具

更多
UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
nginx 重启
nginx 重启

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

423

2023.07.27

nginx 配置详解
nginx 配置详解

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

3847

2023.08.04

nginx配置详解
nginx配置详解

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

6645

2023.08.04

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

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

601

2024.02.23

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

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

1496

2024.07.09

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

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

3978

2024.08.07

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

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

122

2026.01.13

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

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

537

2026.01.13

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

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

精品课程

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

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn