>  기사  >  운영 및 유지보수  >  Nginx 역방향 프록시의 요청 방법 및 요청 헤더를 기반으로 한 ACL 구성

Nginx 역방향 프록시의 요청 방법 및 요청 헤더를 기반으로 한 ACL 구성

王林
王林원래의
2023-06-11 20:20:091752검색

Nginx는 최신 웹 애플리케이션 구축에 점점 더 많이 사용되는 가볍고 효율적인 웹 서버입니다. 역방향 프록시 기능을 통해 Nginx를 로드 밸런싱, 캐싱, 오픈 소스 API 게이트웨이 및 기타 목적으로 사용할 수 있습니다. 이 문서에서는 요청 방법과 요청 헤더를 기반으로 한 ACL(액세스 제어 목록) 구성에 중점을 둡니다.

ACL은 액세스를 제어하는 ​​데 사용되는 메커니즘으로 Nginx에서 널리 사용됩니다. ACL을 통해 Nginx는 요청을 필터링하고 확인한 다음 이를 대상 서버에 배포할 수 있습니다. ACL 메커니즘은 주로 변수, 연산자, 값의 세 부분으로 구성됩니다.

변수는 요청 헤더, 요청 방법, 요청 매개변수 등과 같은 요청의 일부 정보입니다. Nginx는 이러한 변수의 값을 확인하여 서버에 요청을 보낼지 여부를 결정할 수 있습니다. 값은 변수와 비교되는 데이터를 나타냅니다. 연산자는 변수와 값을 비교하는 방법을 지정합니다.

Nginx는 요청 방법과 요청 헤더를 기반으로 ACL 구성을 지원합니다. 다음과 같은 상황에서 이러한 구성을 사용할 수 있습니다.

  1. GET, POST, DELETE 등과 같은 요청 방법 유형을 기준으로 요청을 필터링하려는 경우
  2. Authorization, Content-Type 등과 같은 요청 헤더를 기반으로 요청을 필터링하려고 합니다. 이는 클라이언트 인증을 확인하고 애플리케이션에 필요한 보안을 유지하기 위해 API 게이트웨이에서 일반적으로 사용될 수 있습니다.

요청 방법에 따른 ACL 구성

요청 방법에 따른 ACL 구성은 매우 간단합니다. $request_method 변수를 사용하고 이 변수의 값을 확인하는 연산자를 정의한 다음 허용되는 요청 방법 목록을 지정해야 합니다. 예는 다음과 같습니다.

location /api {
  if ($request_method !~ ^(GET|POST|PUT)$ ) {
    return 405;
  }
  proxy_pass http://localhost:8080;
}

이 구성은 요청 방법이 GET, POST 또는 PUT이 아닌 경우 HTTP 상태 405("허용되지 않는 방법")가 반환됨을 의미합니다. 여기서 GET, POST 또는 PUT 이외의 요청 방법이 일치하면 Nginx는 이를 프록시 서버로 보내지 않습니다.

요청 헤더 기반 ACL 구성

요청 헤더 기반 ACL 구성은 요청 방법 기반 구성과 유사합니다. $http_ 변수와 요청 헤더 이름을 사용하여 요청의 헤더 정보를 얻을 수 있습니다. 그런 다음 연산자를 사용하여 요청 기반 방법과 유사한 방법을 사용하여 헤더 값을 확인할 수 있습니다. 예:

location /api {
  if ($http_authorization !~* "Bearer [a-zA-Z0-9]+" ) {
    return 401;
  }
  proxy_pass http://localhost:8080;
}

위 구성에서 요청 헤더 Authorization에 Bearer로 시작하는 인증 태그가 포함되어 있지 않으면 HTTP 상태 401("Unauthorized")이 반환됩니다. 따라서 Nginx는 올바른 인증 헤더를 제외하고 프록시 서버에 어떤 요청도 보내지 않습니다.

요약

Nginx의 ACL 기능은 많은 요청 관련 로직을 수행하는 데 사용될 수 있습니다. 요청 방법과 요청 헤더를 기반으로 한 ACL 구성은 특정 시나리오에서 액세스 제어를 구현하는 효과적인 방법입니다. 또한 로깅 및 속도 제한과 같은 다른 Nginx 기능과 결합하여 웹 애플리케이션의 보안 및 성능을 향상시킬 수 있습니다.

위 내용은 Nginx 역방향 프록시의 요청 방법 및 요청 헤더를 기반으로 한 ACL 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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