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