Nginx 将日志记录到 TCP 端口上的 syslog

int*_*2Eh 7 nginx logging syslog tcp rsyslog

我需要将 Nginx 访问和错误日​​志重定向到远程系统日志服务器。从http://nginx.org/en/docs/syslog.html我看到我可以做到:

error_log syslog:server=192.168.1.1;
Run Code Online (Sandbox Code Playgroud)

但是我需要重定向到特定的 TCP(不是 UDP!)端口,我尝试了:

error_log syslog:server=192.168.1.1:3000;
Run Code Online (Sandbox Code Playgroud)

但它没有通过。如何向 Nginx 指定端口应该是 TCP 而不是 UDP?

非常感谢!

Rum*_*les 2

无法以这种方式通过 TCP 发送,这是在网络上发送日志的一种非常常见的方式,因为您希望消息传递可靠(请查看 RELP 模块以获取该需求的证据)。

而且,只能通过 UDP 发送日志是很常见的,许多网络设备(例如交换机或路由器)只能通过 UDP 发送,因此发送到系统日志网关可能是一个解决方案,如果您无法在您想要的端口上的系统日志服务器上添加侦听器。这将接收您的 UDP 日志,并通过 TCP 将它们发送到您的中央服务器。

我自己会使用 rsyslog 收集 nginx 服务器上的日志并将其转发到中央服务器,而不是依赖 nginx 来完成所有工作。您可以选择要发送到的协议和端口。