nginx 속도 제한 IP를 특정 파일에 로깅

nginx 속도 제한 IP를 특정 파일에 로깅

nginx 노드 간에 속도가 제한된 IP를 동기화하는 방법을 찾고 있습니다. 이러한 IP를 기록한 후 데이터베이스에 푸시하고 nginx 구성 파일에서 차단된 IP를 업데이트하는 에이전트를 개발하고 싶습니다.

429내 과제는 상태 코드 로 IP nginx를 제한하는 방법을 찾는 것입니다 .

그렇다면 속도가 제한된 IP를 nginx의 특정 파일에 기록하는 것이 가능합니까? 아니면 노드 간에 속도가 제한된 IP를 동기화하기 위한 다른 접근 방식을 제안하십니까?

답변1

예, 그렇게 할 수 있습니다. 유사한 예가nginx 문서.

또한 지시어 는 주어진 변수를 평가하는 access_log선택적 매개변수를 취하고 결과가 0이 아니거나 빈 문자열인 경우에만 기록합니다. 한 레벨에 if=둘 이상을 가질 수 있다는 사실과 함께 access_log필요에 따라 다르게 기록할 수 있습니다.

하지만 먼저 map매핑하려면 가 필요합니다.HTTP 응답 상태당신은 변수에 관심이 있습니다. 블록 map외부에 있어야 한다는 것을 기억하세요 server.

map $status $rate_limited {
    default 0;
    429     1;
}

그런 다음 관련 server블록 에서 access_log.

access_log /var/log/nginx/rate_limited.log combined if=$rate_limited;

한 수준 의 모든 모양은 access_log더 높은 수준의 다른 모든 모양보다 우선하므로 사용하려는 더 높은 수준의 지시문을 복사하는 것이 좋습니다(또는 더 나은 방법 include) .access_log

관련 정보