-
DJANGO + NGINX DDOS 방지 동일 IP중복 요청 제한Django 2023. 11. 14. 16:39
limit_req 모듈을 사용하여 동일 IP중복요청을 제한하여 DDOS공격을 방지하는법
limit_req_zone : 단위 시간당 요청의 수를 제한하는데 사용 limit_conn_zone : 동시 연결 수를 제한하는데 사용 # 모두 사용하여 요청 속도 제한, 동시 연결 수를 제아하여 서버를 보호하는게 좋긴하다고 합니다. # 서로 보완적으로 작동함# nginx.conf http { limit_req_zone $binary_remote_addr zone=ddos:10m rate=5r/s; server { location / { limit_req zone=ddos burst=5; }$binary_remote_addr : 변수에 의해 설정된 클라이언트 IP 주소입니다. zone=ddos:10m : 존의 이름을 ddos로 정의하고 공유 메모리 영역의 용량을 정의합니다. rate=5r/s : 초당 5개이상의 요청이 들어오면 제한합니다. burst=5 : 5개까지는 큐에 보관하고 요청이 burst수를 넘어갈 경우 에러를 반환합니다.기본적으로 요청을 넘겼을때 발생하는 에러는 503입니다.
limit_req zone=ddos burst=5 nodelay; limit_req_status 429;위와같이 반환하는 에러를 정의해줄 수 있습니다. 429 Too Many Requests 로 변환했습니다
https://nginx.org/en/docs/stream/ngx_stream_limit_conn_module.html
Module ngx_stream_limit_conn_module
Module ngx_stream_limit_conn_module The ngx_stream_limit_conn_module module (1.9.3) is used to limit the number of connections per the defined key, in particular, the number of connections from a single IP address. Example Configuration stream { limit_conn
nginx.org
'Django' 카테고리의 다른 글
Django Redis cache (1) 2023.01.03 Django timezone (0) 2022.10.14 Django UniqueConstraint (0) 2022.10.07 Django Signal (1) 2022.09.29 Django unittest pytest (0) 2022.09.28