[server] X-Forwarded-For 헤더를 사용한 nginx 속도 제한

nginx의 HttpLimitReqModule을 사용하여 속도 제한을 조사 중 입니다. 그러나 요청은 모두 헤더에 실제 IP 주소가있는 동일한 IP (로드 밸런서)에서 온 것입니다.

X-Forwarded-For소스의 ip 대신 헤더 의 ip를 기반으로 nginx rate-limit를 설정하는 방법이 있습니까?



답변

예, 일반적인 속도 제한 구성 정의 문자열은 다음과 같습니다.

 limit_req_zone  $binary_remote_addr zone=zone:16m rate=1r/s;

$binary_remote_addr리미터의 고유 키는 어디에 있습니까 ? 헤더 $http_x_forwarded_for값을 얻는 변수로 변경해야합니다 X-Forwarded-For. $binary_remote_addrIP 주소를 저장하기 위해 압축 이진 형식을 사용하고 있기 때문에 메모리 소비가 증가하지만 $http_x_forwarded_for그렇지 않습니다.

 limit_req_zone  $http_x_forwarded_for zone=zone:16m rate=1r/s;


답변

limit_req_zone지시어는 요청 그룹화 키로 사용할 수있는 변수를 정의합니다.
일반적으로 는 크기가 작고 공간을 절약하기 때문에 $binary_remote_addr대신 사용됩니다 $remote_addr.

어쩌면 RealipModule 을 사용하고 싶을 수도 있습니다 .
이렇게하면 원격 주소 변수를 사용자 정의 헤더에 제공된 주소로 다시 쓰며 로깅 및 기타 변수 사용이 더 쉬워집니다.


답변