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