태그 보관물: http-status-code

http-status-code

속도 제한시 429 http 코드를 반환하도록 nginx를 어떻게 구성합니까? RFC6585 입니다. stackexchanged 에서이 (닫힌) 질문 은 error_page

제한 / 속도 제한시 기본 503 (서비스를 사용할 수 없음) 대신 http 상태 코드 429 (너무 많은 요청)를 반환하도록 nginx를 어떻게 구성합니까?

참고로, HttpLimitReqModule과 함께 nginx를 리버스 프록시로 사용하고 있습니다. 429 상태 코드의 초안 스펙은 RFC6585 입니다.

stackexchanged 에서이 (닫힌) 질문error_page 지시문 을 사용할 수 있음을 보여줍니다 . 그러나, 나는 하지 않습니다 정말 서버 문제 (너무 많이 우리를 타격 고객)와 서버 사용할 수 없음 503 서비스를 반환해야한다이 경우 429을 반환합니다.

어떤 제안?



답변

좋은 소식, 버전 1.3.15
http://mailman.nginx.org/pipermail/nginx/2013-March/038306.html

“limit_req_status”및 “limit_conn_status”지시문이 있습니다. 방금 Gentoo Linux에서 테스트했습니다 (limit_req 및 limit_con 모듈을 컴파일해야 함).

이 설정을 사용하면 요청한 것을 얻을 수 있다고 생각합니다.

limit_req_status 429;
limit_conn_status 429;

나는 이것을 빨리 확인했다.

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

높은 요청 속도와 nginx의 구성된 한계로 인해 지시문을 활성화 한 후 대부분의 요청이 실패한 경우 :

limit_req zone=api burst=15 nodelay;

답변

VBart의 답변과 기타 의견을 바탕으로 가장 좋은 옵션은 503 오류를 429로 매핑하는 것입니다.

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

nginx (1.3.x)는 limit_req 및 limit_conn에 대해 503 상태 코드 만 사용하므로이 방법을 사용하는 것이 좋습니다.