Conversation

We've had to start hardening our services against increasingly frequent Denial of Service (DoS) attacks. OVH provides DDoS mitigation, but this a smaller scale problem. Unfortunately, nginx lacks some important configuration options and some others are specific to NGINX Plus.
1
7
Setting client_body_timeout to 15s won't time out a client sending 1 byte every 10s. There's no timeout for receiving the whole body. Only permitting tiny request bodies helps but isn't always an option. There's no way to timeout based on a minimum rate or even the total time.
1
1
blog.cloudflare.com/the-curious-ca is a post about the interaction between send timeouts and buffering. It's not quite the same thing and buffer bloat mitigations may partially address it. Still, it shows how this approach to timeouts based on time between system calls doesn't work well.
1
2
Replying to and
Carrier-grade NAT, VPNs, etc. mean that many users can be behind a single IP. Also, HTTP < 2 opens a lot of connections for each user while HTTP > 1 multiplexes streams and can create a lot of concurrent work with a single connection so nginx's limit treats each stream as a conn.
2
Replying to and
github.com/valyala/goloris with a reverse proxy endpoint that accepts POST from a bunch of IPs is kind of thing we are trying to work around and the existing settings really aren't adequate. It's not quite the same as what's happening but it's what I'm using to test changes for now.