I would like to add a small delay to error 503 responses back to the
client. Error code 503 is triggered when a client hits the
“limit_req_zone” of 200 requests per minute.
Maxim’s ngx_http_delay looks like the right tool but I think my
configuration, or my understand is wrong. I am using the latest
version of Nginx and have built it from source adding in the
ngx_http_delay from the git repo. The build finished without error and
Nginx daemon starts fine.
I am using the following syntax. My understanding is error 503 will be
trapped and sent to the “abuse503” location. In “location @abuse503”
we sleep for 2 seconds and then return a error code 503 to the client.
As a test I execute “wget http://myserver/.test”
Test – deny hidden files
location ~ /. { error_page 404 503 @abuse503; }
error_page 503 @abuse503;
location @abuse503 {
delay 2s;
return 503;
}
Do I have the syntax correct? Oddly, what I am seeing is a 404 being
returned immediately and not delayed if the file does NOT exist on the
file system.
192.168.0.1 myserver - [22/Jun/2012:13:26:50 -0400] “GET /.test
HTTP/1.1” 404 831 “-” “Wget/1.13.4 (linux-gnu)”
2012/06/22 13:26:50 [error] 4227#0: *60 open()
“/disk/web/htdocs/.test” failed (2: No such file or directory),
client: 192.168.0.1, server: myserver, request: “GET /.test HTTP/1.1”,
host: “myserver”
If the file DOES exist a 503 is sent, but no delay.
Thanks for your time.