Marius Schuller
5 years
Andreas Herz
6 years
Claus-Theodor Riegg
7 years
Claus-Theodor Riegg
7 years
Claus-Theodor Riegg
8 years
Claus-Theodor Riegg
8 years

load balance unix sockets to UDP destinations

Posted . Visible to the public.

Nginx is capable of forwarding a unix socket to UDP backend servers. This is quite handy for load balance syslog traffic.

Example nginx configuration

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;
    }
}

Testing the connection

echo "Hello Syslog!" | socat - /run/nginx/log.sock

Info

There are cases where nginx does not clean up the socket files after shutdown.

Systemd managed runtime dir

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
Moritz Kraus
Last edit
Moritz Kraus
License
Source code in this card is licensed under the MIT License.