upstream backend { least_conn; server node1:4000 max_fails=1 fail_timeout=5s; server node2:4000 max_fails=1 fail_timeout=5s; keepalive 32; } server { listen 80; location / { proxy_pass http://backend; proxy_http_version 1.1; # WebSocket support (required for LiveView) proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Fast failure detection and automatic retry on the other node proxy_connect_timeout 2s; proxy_next_upstream error timeout http_502 http_503 http_504; proxy_next_upstream_tries 2; proxy_next_upstream_timeout 4s; proxy_read_timeout 86400; proxy_send_timeout 86400; } }