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

大瑶酱_2366

大瑶酱_2366

2026-05-07

442人浏览

原创

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 组合,并监控管道状态。

相关文章

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

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

下载

相关标签:

nginx

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

相关专题

更多
nginx 重启
nginx 重启

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

2023.07.27

423

5

nginx 配置详解
nginx 配置详解

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

2023.08.04

3867

6

nginx配置详解
nginx配置详解

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

2023.08.04

6645

6

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

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

2024.02.23

601

5

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

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

2024.07.09

1496

5

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

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

2024.08.07

3978

3

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

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

2026.01.13

122

12

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

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

2026.01.13

537

23

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

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

2026.03.16

179

12

热门下载

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

精品课程

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

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习