nginx 요청량 제한 설정

IT 2025. 8. 28. 22:03


분당 요청수 제한 설정

$ sudo nano /etc/nginx/nginx.conf
$ sudo nano /etc/nginx/sites-enabled/default

http {
    ...
    # IP 주소에 따라 키(key)를 생성하는 규칙 정의
    geo $limit_key {
        default 1;      # 기본값은 1 (제한 적용)

# 요청수 제한에 제외 설정
        123.123.123.123 0; # 제외할 IP는 0 (제한 미적용)
        192.168.0.0/24 0; # 요청수 제한에 제외할 IP 대역
    }

    # $limit_addr 생성
    map $limit_key $limit_addr {
        1 $binary_remote_addr;
        0 "";
    }

    # 실제 요청 제한 규칙 정의
    limit_req_zone $limit_addr zone=by_ip:10m rate=50r/m; # 1분에 50회로 요청 제한

    limit_req_status 429;         # 503 대신 429 반환


    server {
        ...

 

        # 정적파일은 제한을 걸지 않음
        location ~* \.(?:js|css|png|jpg|gif|svg|ico|webp|woff2|ttf|map)$ {      }

        location / {
...
            # 위에서 정의한 'by_ip' 규칙 적용
            limit_req zone=by_ip burst=10 nodelay; 
...
        }
...
    }
}

- 설정 검사
sudo nginx -t

- 변경된 설정으로 변경
sudo systemctl reload nginx

 

반응형
Posted by codens