Nginx is capable of forwarding a unix socket to UDP backend servers. This is quite handy for load balance syslog traffic.
load_module /usr/share/nginx/modules/ngx_stream_module.so;
stream {
upstream syslog_servers {
server 192.0.2.10:514;
server 192.0.2.11:514;
server 192.0.2.12:514;
}
server {
listen unix:/run/nginx/log.sock udp;
proxy_pass syslog_server;
}
}
echo "Hello Syslog!" | socat - /run/nginx/log.sock
Info
There are cases where nginx does not clean up the socket files after shutdown.
The RuntimeDirectory
configuration ensures the creation and deletion of the directory /run/nginx
on startup and shutdown of the process.
# /etc/systemd/system/nginx.service.d/runtime-dir.conf
[Service]
RuntimeDirectory=nginx