nginx - 서버 블록당 대역폭 사용량 제한

nginx - 서버 블록당 대역폭 사용량 제한

Apache에는 mod_bandwidth와 같이 가상 호스트당 대역폭 사용량을 제한하기 위한 몇 가지 훌륭한 솔루션이 있습니다. 하지만 nginx를 사용하기 시작한 이후로 각 서버 블록의 대역폭 사용량을 제한하고 모니터링하는 방법을 찾을 수 없었습니다.

nginx에서 서버 블록당 대역폭 사용량을 모니터링하고 제한하는 것과 관련된 몇 가지 제안을 듣고 싶습니다.

답변1

limit_rate대역폭을 제한하는 데 사용할 수 있습니다 . 나에게 이것은 nginx의 커뮤니티 버전에서도 작동합니다.

예를 들어 다음과 같이 전체 서버 블록에 대해 대역폭을 초당 1000바이트로 제한할 수 있습니다.

server {
    listen 80;

    location / {
        limit_rate 1k;
    }
}

답변2

Nginx Plus에는 호스트당 대역폭을 조절하는 옵션이 내장되어 있습니다.

nginx의 커뮤니티 버전을 통해 이를 달성하려면 다음 두 가지 옵션이 있습니다. (IP당 대역폭 풀링만 포함하기 때문입니다.)

1: 외부 도구나 IP 테이블을 사용하여 전체 nginx 프로세스의 대역폭을 제한합니다.

2: 프록시 패스를 통해 lighttpd에 이 특정 콘텐츠를 제공하고 lighttpd에서 서버 스로틀을 설정합니다.

server.kbytes-per-second = 6250

downloads.domain.net을 제한하려는 경우 Lighthttpd는 다음 구성을 갖습니다.

server.port = 81
server.document-root = "/path/to/downloads"
index-file.names = ( )

엔진엑스:

server {
    listen 80;
    server_name downloads.domain.net;

    location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://127.0.0.1:81;
    }
}

물론 특정 파일, 폴더 등을 기준으로 프록시를 수행할 수도 있습니다.

궁극적으로: 이것을 사용하고 전체 포트 80 트래픽(및 443)을 조절하는 ip-table은 특정 대역폭 지점을 초과하고 싶지 않은 경우를 위한 궁극적인 솔루션입니다. (예를 들어 VoIP 서비스는 http 트래픽에 대한 엄격한 제한을 요구할 수 있습니다)

관련 정보