nginx DDoS 공격 에 대한 간단 한 설정
8092 단어 nginx
기본 소개
1.ngx_http_limit_req_module
설정 형식 및 설명:
캐 시 영역 을 설정 하여 서로 다른 key 상 태 를 저장 합 니 다. 이 상 태 는 현재 과 다 한 요청 수 를 말 합 니 다.키 는 variable 에서 지정 한 비어 있 지 않 은 변수 입 니 다. $binary 를 사용 합 니 다.remote_addr, 원본 IP 를 key 값 으로 표시 합 니 다.
limit_req_zone $variable zone=name:size rate=rate;
제 한 될 캐 시 영역 과 최대 요청 이 도착 하면 지연 대기 열 에 몇 개의 요청 이 들 어 갈 지 지정 합 니 다 (다른 것 은 직접 버 립 니 다).요청 수가 상한 선 에 도달 하지 않 고 지연 되 기 를 원 하지 않 으 면 nodelay 를 사용 해 야 합 니 다.
limit_req zone=name [burst=number] [nodelay];
예:
캐 시 영역 은 10M 이 며 요청 은 초당 1 회, 지연 대기 열 은 5 로 제 한 됩 니 다.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
...
server {
...
location /search/ {
limit_req zone=one burst=5;
}
}
2.ngx_http_limit_conn_module
설정 형식 및 설명:
다른 키 의 상 태 를 저장 할 캐 시 영역 을 설정 합 니 다.원본 IP 를 key 로 사용 하여 모든 원본 IP 의 링크 수 를 제한 합 니 다.
limit_conn_zone $binary_remote_addr zone=addr:10m;
제 한 된 캐 시 영역 을 지정 하고 키 마다 링크 개 수 를 지정 합 니 다.
limit_conn zone number;
예:
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
...
location /download/ {
limit_conn addr 1;
}
}
2. 실제 응용
프 록 시 서버 로 서 모든 사용자 의 요청 속도 와 링크 수량 을 제한 해 야 합 니 다. 그러나 한 페이지 에 여러 개의 키 자원 이 있 기 때문에 선택 하지 않 은 것 을 제한 하면 불필요 한 번 거 로 움 이 많이 발생 합 니 다. 예 를 들 어 한 페이지 에 40 개의 키 소스 가 있 기 때문에 한 페이지 를 완전 하 게 표시 하려 면요청 속도 와 연결 수 를 모두 40 으로 조정 하여 사용자 의 정상 적 인 요청 을 막 지 않도록 해 야 합 니 다. 이 제한 은 서버 성능 에 큰 영향 을 주 고 수백 명의 사용자 가 nginx 의 처리 성능 을 끌 어 내 릴 수 있 습 니 다.
그래서 html 페이지 와 같은 어떤 요청 을 해 야 하 는 지 설정 해 야 합 니 다.css, js, 그림 등 제한 이 필요 없 는 것 이 무엇 인지 설정 을 통 해 대응 하 는 location 를 더욱 세분 화해 야 합 니 다.
주: location 소 개 는 마지막 부록 참조
저 희 는 css, js, gif, png, jpg 등 연결 제한 을 하지 않 고 이 를 제외 한 링크 를 제한 합 니 다.
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
...
server {
...
location ~ .*\.(gif|png|css|js|icon)$ {
proxy_set_header Host $http_host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* .*\.(jpeg|jpg|JPG)$ {
proxy_set_header Host $http_host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# image_filter resize 480 -;
# image_filter_jpeg_quality 50;
# image_filter_sharpen 10;
# image_filter_buffer 4M;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#limit
limit_conn addr 3;
limit_req zone=one burst=5;
}
}
부록: 위치 설정 에 대한 간단 한 소개 http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html
문법 규칙: location [= | ~ | ~ * | ^ ~] / uri / {...}
= 첫머리 는 정확하게 일치 함 을 나타 낸다
^ ~ 시작 은 uri 가 일반적인 문자열 로 시작 하여 url 경로 와 일치 하 는 것 으로 이해 하면 됩 니 다.nginx 는 url 에 인 코딩 을 하지 않 기 때문에 / static / 20% / aa 로 요청 합 니 다. 규칙 ^ ~ / static / / aa 에 일치 할 수 있 습 니 다 (빈 칸 주의).
대소 문자 구분 정규 일치
~* 대소 문 자 를 구분 하지 않 는 정규 일치
!~와!대소 문자 의 일치 하지 않 음 과 대소 문자 의 일치 하지 않 음 을 구분 하지 않 는 정규 입 니 다.
/ 공통 적 으로 일치 합 니 다. 모든 요청 이 일치 합 니 다.
여러 location 설정 의 경우 일치 하 는 순 서 는 (참고 자료 에서 왔 습 니 다. 아직 실제 검증 되 지 않 았 습 니 다. 해 보면 알 수 있 습 니 다. 구 애 받 지 않 고 참고 만 하 십시오) 입 니 다.
우선 일치 =, 그 다음 일치 ^ ~, 그 다음은 파일 의 순서 에 따라 정규 일치, 마지막 으로 전달 / 통용 일치.일치 가 성공 하면 일치 하지 않 고 현재 일치 하 는 규칙 에 따라 요청 을 처리 합 니 다.
예, 다음 과 같은 일치 규칙 이 있 습 니 다.
location = / {
#규칙 A
}
location = /login {
#규칙 B
}
location ^~ /static/ {
#규칙 C
}
location ~ \.(gif|jpg|png|js|css)$ {
#규칙 D
}
location ~* \.png$ {
#규칙 E
}
location !~ \.xhtml$ {
#규칙 F
}
location !~* \.xhtml$ {
#규칙 G
}
location / {
#규칙 H
}
그러면 발생 하 는 효 과 는 다음 과 같다.
루트 디 렉 터 리 에 접근 /, 예 를 들 어 http://localhost/ 일치 하 는 규칙 A
방문 하 다. http://localhost/login 일치 하 는 규칙 B, http://localhost/register 일치 하 는 규칙 H
방문 하 다. http://localhost/static/a.html 일치 하 는 규칙 C
방문 하 다. http://localhost/a.gif , http://localhost/b.jpg 규칙 D 와 규칙 E 가 일치 하지만 규칙 D 순서 가 우선 이 고 규칙 E 가 작 동 하지 않 습 니 다. http://localhost/static/c.png 규칙 C 에 우선 일치
방문 하 다. http://localhost/a.PNG 규칙 E 는 대소 문 자 를 구분 하지 않 기 때문에 규칙 D 와 일치 하지 않 습 니 다.
방문 하 다. http://localhost/a.xhtml 규칙 F 와 규칙 G 가 일치 하지 않 습 니 다. http://localhost/a.XHTML대소 문 자 를 구분 하지 않 기 때문에 규칙 G 와 일치 하지 않 습 니 다.규칙 F, 규칙 G 는 배제 법 에 속 하고 일치 하 는 규칙 에 부합 되 지만 일치 하지 않 기 때문에 실제 응용 에서 어디 에 사용 되 는 지 생각해 보 세 요.
방문 하 다. http://localhost/category/id/1111 마지막 으로 규칙 H 에 일치 합 니 다. 상기 규칙 이 일치 하지 않 기 때문에 이 때 는 nginx 리 트 윗 요청 이 백 엔 드 응용 서버 에 있어 야 합 니 다. 예 를 들 어 FastCGI (phop), tomcat (jsp), nginx 는 방향 프 록 시 서버 로 존재 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.