nginx 요청량 제한 설정
분당 요청수 제한 설정
$ 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