Nginx 대역 폭 제어 (속도 제한 모듈 사용)
좋 은 소식 은 Nginx 가 limit 를 제 공 했 습 니 다.rate 와 limitrate_after, 예 를 들 어 설명 하 자.
location /download/ {
limit_rate_after 500k;
limit_rate 50k;
}
사용자 다운로드 가 500 k 에 이 르 면 50k 이내 로 속 도 를 조절 한 다 는 뜻 이다.
나 쁜 소식 은 이 제어 가 단일 연결 에 대한 것 이다.단일 연결 의 대역 폭 만 제한 할 수 있 을 뿐 총 대역 폭 을 제한 할 수 없다 는 얘 기다.하지만 limit 사용conn 모듈 은 어느 정도 문 제 를 완화 할 수 있 습 니 다.
limit_conn_zone $server_name zone=servers:10m;
server {
location /download/ {
limit_conn servers 1000;
limit_rate_after 500k;
limit_rate 50k;
}
}
limit 통과 하기conn 은 병렬 연결 수 를 제한 하여 총 대역 폭 을 제한 했다.안 타 깝 게 도 이 해결 방식 은 완벽 하지 않 습 니 다. 여러분 은 다음 과 같은 예 를 상상 할 수 있 습 니 다. 1000 명의 사용자 가 동시에 50k 의 속도 로 다운로드 할 수 있 습 니 다.그렇다면 총 대역 폭 이 변 하지 않 는 상황 에서 2000 명의 사용자 가 동시에 25k 속도 로 다운로드 할 수 있 습 니까?업무 적 인 측면 에서 볼 때 답 은 당연히 긍정 적 이지 만 실제로는 limitconn 과 limitrate 가 유연 하지 않 아서 이런 논 리 를 간단하게 실현 할 수 없습니다.
물론 문 제 는 해결 할 방법 이 있 을 것 이다.예 를 들 어 제3자 모듈 사용: limitspeed;리 눅 스에 내 장 된 TC 명령 도 사용 할 수 있다.limit_speed 는 비교적 간단 합 니 다. 더 이상 말 하지 않 겠 습 니 다. 다음은 TC 의 용법 을 살 펴 보 겠 습 니 다.
shell> tc qdisc add dev eth0 root handle 1: htb default 10
shell> tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit
shell> tc filter add dev eth0 protocol ip parent 1:0 prio 1 \
u32 match ip dport 80 0xffff flowid 1:1
TC 복잡 하 게 사람 을 미 치 게 합 니 다. 참고 하 세 요: Linux Advanced Routing & Traffic Control HOWTO.
본 고 는 여러 개의 Nginx 접근 제한 모듈 을 소개 하 였 으 며, 실제로는 limit 가 있다.req 모듈 도 훌륭 합 니 다. 본 논문 과 관계 가 크 지 않 지만 'nginx limit req 제한 속도 설정' 을 참고 하 시기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.