Por padrão, nginx
retornará um código de erro 503 service temporarily unavailable
.
A diretiva limit_req_status
existe para alterar o código de erro, caso eles atinjam o limit_req
:
location = /search/bulk {
limit_req zone=one burst=2;
limit_req_status 404;
}
O problema é que essa diretiva permite apenas um intervalo de 400 a 599, portanto, você não pode especificar um 301
:
[emerg] 3130#0: value must be between 400 and 599 in /etc/nginx/nginx.conf:72
Portanto, se o seu problema principal é exibir uma mensagem de erro personalizada em vez do padrão 503
, você pode proceder assim:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location = /search/bulk {
limit_req zone=one burst=2;
error_page 503 /503.html;
}
location /503.html {
internal;
}
}
}
Em seguida, seu arquivo 503.html
personalizado:
<html><body>Would you like to use our API ?</body></html>
O argumento rate
é obrigatório. Você precisa especificar uma taxa para limit_req_zone