README: what rproxy gives an app without waf (closes #386)
check / check (push) Failing after 4m14s

Adds a paragraph to "What it does" listing what rproxy enforces with
default settings whether or not waf answers: malformed requests, methods,
header size, request and response times, body sizes, idle connections.
It says header count and line length limits are waf's.

Model: opus-5-5
This commit is contained in:
sneak committed 2026-11-14 16:39:48 +00:00
1 parent 53d9bf6af6
commit 07f8a241d4
1 file changed
+19 -1
+19 -1
View File
@@ -22,7 +22,25 @@ shipped in one image, with two commands that do this together:
The site keeps answering while `waf` is down, slow or restarting: without an
answer in time, `rproxy` passes the request to the app.
It protects against:
`rproxy` also protects the app on its own, whether or not `waf` answers. It
limits the total size of a request's headers, but not their number: the limits
on the number of headers and cookies, and on each header line's length, are
`waf`'s. With the default settings, `rproxy`:
- answers `400` to a malformed request, such as a broken header line or a
missing `Host`;
- answers `405` to a method it does not pass on, such as `TRACE`;
- answers `431` to a request line and headers over 32 KiB together;
- gives the visitor 60 seconds to send the request line and headers, and then 60
seconds more for the whole request to reach the app;
- answers `413` to a request body over 100 MiB;
- gives the app's answer 30 minutes to reach the visitor, counted from the end
of the request;
- answers `502` in place of an app's answer whose body is over 1 GiB, or cuts it
off if it has started;
- closes a kept-open connection after 120 seconds idle.
Together, `rproxy` and `waf` protect against:
- Scrapers that fetch every page of a site, all day. Each client gets a limit on
requests and on body bytes per minute, per hour and per day. The defaults