>  기사  >  운영 및 유지보수  >  Nginx HTTP 요청 필터링 및 역방향 프록시 성능 분석

Nginx HTTP 요청 필터링 및 역방향 프록시 성능 분석

WBOY
WBOY원래의
2023-06-10 13:52:271579검색

Nginx HTTP 요청 필터링 및 역방향 프록시 성능 분석

Nginx는 단순한 디자인과 뛰어난 성능으로 인해 업계에서 널리 사용되는 HTTP 서버 및 역방향 프록시 서버로, 수많은 웹 애플리케이션, 클라우드 시스템 및 모바일로 자리잡고 있습니다. 응용 프로그램을 선호합니다. 실제 애플리케이션에서 Nginx는 HTTP 요청 처리 및 응답을 담당할 뿐만 아니라 HTTP 요청 필터링 및 역방향 프록시도 수행합니다. 이 기사에서는 Nginx의 HTTP 요청 필터링 및 역방향 프록시 구현을 분석하고 성능 테스트 및 분석을 수행합니다.

  1. HTTP 요청 필터링 구현

Nginx는 정규 표현식을 기반으로 하는 HTTP 요청 필터링 모듈을 제공합니다. 이 모듈은 적격한 HTTP 요청을 가로채서 악성 요청을 필터링하거나 지정된 리소스를 보호할 수 있습니다. HTTP 요청 필터링을 활성화하려면 Nginx 구성 파일에 다음 코드를 추가하세요.

http {
    server {
        location / {
            if ($http_user_agent ~* Firefox) {
                return 403;
            }
            ...
        }
    }
}

위 코드에서 $http_user_agent는 Nginx의 내장 변수로, HTTP 요청 헤더의 User-Agent 필드를 나타냅니다. 정규식 일치. Firefox 문자열이 일치하면 403 오류가 반환됩니다. 이러한 방식으로 하나 이상의 요청 유형을 필터링할 수 있습니다.

Nginx의 HTTP 요청 필터링 모듈은 HTTP 요청의 복잡한 필터링을 구현하는 데 사용할 수 있는 $http_referer, $request_method, $remote_addr 등과 같은 다른 유형의 변수 및 명령도 제공합니다. 독자는 관련 문서에서 내부를 확인할 수 있습니다. 깊은 이해.

  1. 역방향 프록시 구현

Nginx의 역방향 프록시 기능은 클라이언트 요청 프록시를 백엔드 애플리케이션 서버로 전달할 수 있습니다. 백엔드 애플리케이션 서버가 결과를 반환한 후 Nginx는 결과를 클라이언트에 반환합니다. 부하 달성 성능 균형을 맞추고 향상시키는 것이 목적입니다.

다음은 간단한 역방향 프록시 구성입니다.

http {
    upstream myapp {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp;
        }
    }
}

위 구성에서는 각각 포트 8080 및 8081을 수신하는 두 개의 백엔드 서버를 지정하는 myapp이라는 업스트림을 정의합니다. 서버 블록에서는 포트 80을 수신하고, 위치 /를 구성하고, Proxy_pass 지시어를 통해 myapp에 요청을 전달하고, myapp 프록시는 이를 백엔드 서버에 전달합니다.

Nginx의 역방향 프록시는 로드 밸런싱 알고리즘, 오류 처리, 세션 고정 등과 같은 몇 가지 고급 전략도 제공합니다. 독자는 관련 문서를 참조하여 자세히 알아볼 수 있습니다.

  1. 성능 테스트 및 분석

위의 분석을 통해 Nginx의 HTTP 요청 필터링 및 역방향 프록시 기능이 매우 강력하다는 것을 알 수 있지만 실제 애플리케이션에서는 여전히 성능에 주의해야 합니다. Nginx의 성능을 테스트하기 위해 ApacheBench(ab) 도구를 사용하여 Ubuntu 20.04 서버에서 테스트를 진행하였습니다.

첫 번째는 HTTP 요청 필터링 테스트입니다. 요청 헤더의 User-Agent 필드를 "Mozilla/5.0"으로 설정하고 Nginx 서버에 1000개의 요청을 보냅니다.

ab -n 1000 -H "User-Agent: Mozilla/5.0" http://localhost/

테스트 결과는 Nginx가 22.33 요청을 처리할 수 있음을 보여줍니다. 초당 요청당 평균 시간은 44.76ms이고 요청의 90%가 54ms 이내에 완료됩니다.

Concurrency Level:      1
Time taken for tests:   44.780 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      159000 bytes
HTML transferred:       0 bytes
Requests per second:    22.33 [#/sec] (mean)
Time per request:       44.780 [ms] (mean)
Time per request:       44.780 [ms] (mean, across all concurrent requests)
Transfer rate:          3.47 [Kbytes/sec] received

다음은 역방향 프록시 테스트입니다. 간단한 백엔드 서버를 사용하여 실제 애플리케이션을 시뮬레이션했습니다. 각 요청 처리 시간은 10ms이고 요청은 동시에 두 개의 백엔드 서버에 시작됩니다.

http {
    upstream myapp {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp;
        }
    }
}
ab -n 1000 http://localhost/

테스트 결과에 따르면 Nginx는 초당 966.41개의 요청을 처리할 수 있고 각 요청의 평균 시간은 1.03ms이며 요청의 90%는 2ms 이내 완료:

Concurrency Level:      1
Time taken for tests:   1.034 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      154000 bytes
HTML transferred:       0 bytes
Requests per second:    966.41 [#/sec] (mean)
Time per request:       1.034 [ms] (mean)
Time per request:       1.034 [ms] (mean, across all concurrent requests)
Transfer rate:          145.42 [Kbytes/sec] received

테스트 결과에서 Nginx는 HTTP 요청을 가로채고 전달하는 능력이 매우 강력하며, 많은 수의 요청을 처리하고 높은 성능을 유지할 수 있음을 알 수 있습니다. 그러나 Nginx의 성능은 서버 하드웨어 기능, 운영 체제 매개변수 및 Nginx 구성과 같은 요인에 의해 제한되기도 합니다. 독자는 실제 애플리케이션의 실제 조건에 따라 조정하고 최적화해야 합니다.

결론

이 글에서는 Nginx의 HTTP 요청 필터링과 역방향 프록시 기능을 분석하고, 그 구현과 성능을 소개하고, 간단한 테스트와 분석을 진행합니다. 일반적으로 사용되는 HTTP 서버 및 역방향 프록시 서버인 Nginx는 강력한 웹 서비스 기능을 제공합니다. 독자는 실제 요구 사항과 환경에 따라 다양한 Nginx 모듈과 매개 변수를 선택하고 구성하여 최상의 성능과 효과를 얻을 수 있습니다.

위 내용은 Nginx HTTP 요청 필터링 및 역방향 프록시 성능 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.