24 votos

¿Cómo puedo configurar nginx para volver 429 http de código cuando la limitación de velocidad?

¿Cómo puedo configurar nginx para volver de código de estado http 429 (Demasiadas Solicitudes) en lugar de la predeterminada 503 (Service Unavailable) cuando la limitación/limitación de velocidad?

FYI, estoy usando el nginx como proxy inverso con el HttpLimitReqModule. El borrador de la especificación de las 429 código de estado es RFC6585.

Este (cerrado) pregunta sobre stackexchanged muestra que es posible el uso de la error_page directiva. Sin embargo, yo no quiero volver un 429 si realmente hay un problema con el servidor (no el cliente nos golpea demasiado) y el servidor debe devolver 503 Servicio no Disponible.

Alguna sugerencia?

38voto

vanthome Puntos 360

Buenas noticias, con la Versión 1.3.15 http://mailman.nginx.org/pipermail/nginx/2013-March/038306.html

tenemos el "limit_req_status" y "limit_conn_status" directivas. Acabo de probar en Gentoo Linux (tenga en cuenta que usted necesita para tener los módulos limit_req y limit_con compilado).

Con estas opciones creo que se puede lograr lo que has pedido:

limit_req_status 429;
limit_conn_status 429;

He verificado con un rápido:

ab2 -n 100000 -c 55 "http://127.0.0.1/api/v1

En el que la mayoría de la solicitud de error después de la activación de la directiva debido a la alta tasa de solicitud y el límite configurado en nginx:

limit_req zone=api burst=15 nodelay;

1voto

adambrod Puntos 18

Basado en VBart la respuesta y los comentarios de otros, está claro que la mejor opción es el mapa errores 503 a 429s.

error_page 503 = 429 /too-many-requests.html

Desde nginx (1.3.x) sólo se utiliza 503 códigos de estado para limit_req y limit_conn, este debe ser un buen método.

0voto

VBart Puntos 3113

Nginx sí nunca devuelve 503 en casos distintos de limit_req y limit_conn.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X