혹시 아시는 분이 계시면 여쭤볼 것이 있습니다:
(1) 저는 관리자(신뢰 수준 4)인데, 왜 “DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL” 설정이 제 IP 기반 속도 제한을 우회하지 않나요?
전역 IP별 속도 제한
이 제한은 Discourse 애플리케이션에 접근하는 모든 고유 IP 주소에 적용됩니다. (파일 시스템이나 CDN에서 직접 제공되는 파일은 제외됩니다)
기본적으로 이 속도 제한은 활성화되어 있으며, 비활성화하거나 보고 모드(reporting mode)로 설정할 수 있습니다.
DISCOURSE_MAX_REQS_PER_IP_MODE: 기본값은 block이며, 이 속도 제한은 기본적으로 적용됩니다. (다른 옵션으로는 warn, warn+block, none이 있습니다)
DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: 분당 IP당 요청 수 (기본값 200)
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 10초당 IP당 요청 수 (기본값 50)
DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: 10초당 IP당 에셋(아바타/CSS) 요청 수 (기본값 200)
DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: Discourse에 접근하는 사설 IP에도 속도 제한을 적용할까요? 기본값은 false입니다.
DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: 이 신뢰 수준 이상의 사용자에게는 IP 기반 속도 제한 대신 사용자별 속도 제한을 사용 (기본값 1)
제한 값을 수정하려면 app.yml 파일의 env 섹션에 원하는 변경 사항을 추가하세요.
아래와 같이 시도해 볼 수 있습니다:
DISCOURSE_MAX_REQS_PER_IP_MODE: warn
DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: 600
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 200
DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: 400
DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: false
DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: 2
또한 nginx 액세스 로그를 확인해 보니 사용자별로 서로 다른 IP 주소가 표시되고 있습니다. (훨씬 이전 주제에서 이것이 문제가 되었던 것을 본 적이 있는데, 당시에는 모든 사용자가 동일한 IP 주소로 접근하고 있었습니다)