>운영 및 유지보수 >엔진스 >Nginx 리버스 프록시의 키워드 및 블랙리스트를 기반으로 한 ACL 구성

Nginx 리버스 프록시의 키워드 및 블랙리스트를 기반으로 한 ACL 구성

王林
王林원래의
2023-06-10 09:52:391586검색

네트워크 발전의 급속한 발전에 따라 배포되는 애플리케이션과 서비스의 수가 증가하고 있습니다. 일부 시나리오에서는 요청을 특정 서버나 애플리케이션으로 라우팅해야 합니다. Nginx는 이러한 문제를 해결할 수 있는 고성능 웹 서버이자 일반적으로 사용되는 역방향 프록시 방식입니다. Nginx 리버스 프록시에서 제공하는 ACL 모듈을 기반으로 관리자는 요청 라우팅, 액세스 제어 및 기타 네트워크 보안 문제를 유연하게 제어하고 관리할 수 있습니다.

역방향 프록시에서는 클라이언트에서 역방향 프록시 서버로 요청이 전송되고, 프록시 서버는 클라이언트를 대신하여 백엔드 서버에 요청을 보내고 반환 결과를 클라이언트에 제공합니다. 예를 들어, 여러 언어와 기술 스택이 포함된 최신 웹 애플리케이션에서 Nginx 역방향 프록시를 사용하면 동일한 도메인 이름을 통해 다양한 요청을 다양한 백엔드 서비스로 라우팅할 수 있습니다.

이 기사에서는 Nginx 역방향 프록시에 대한 보다 세부적인 라우팅 정책 및 보안 제어를 구현하기 위해 키워드 및 블랙리스트 기반 ACL을 구성하는 방법을 알아봅니다.

키워드 ACL

키워드 ACL은 요청 URL의 키워드를 일치시켜 요청 라우팅을 구현하는 방법입니다. 예를 들어, 현재 애플리케이션에서 요청된 URL에 "/app1/"이 포함되어 있으면 Nginx 역방향 프록시가 요청을 백엔드 애플리케이션 1로 라우팅하도록 합니다. URL에 "/app2/"가 포함되어 있으면 요청이 백엔드 애플리케이션 2로 라우팅됩니다.

이 기능을 구현하려면 Nginx 구성 파일에서 키워드 ACL을 구성해야 합니다. 구성 방법은 다음과 같습니다.

http {
    ...
    # 关键词acl
    map $request_uri $app_name {
        ~* "/app1/" app1;
        ~* "/app2/" app2;
        default "";
    }
}

이 구성에서 $request_uri는 요청된 URL을 나타내는 Nginx 내장 변수입니다. 이 변수의 값은 미리 정의된 키워드 정규식과 일치하는 map 지시문에 전달됩니다. 일치에 성공하면 애플리케이션 이름이 $app_name 변수에 저장되고, 그렇지 않으면 기본값이 사용됩니다.

그런 다음 위에서 정의한 $app_name 변수를 프록시 지시문의 프록시 URL 옵션에 프록시 대상으로 전달할 수 있습니다.

server {
    ...
    location / {
        ...
        # 配置关键词代理
        proxy_pass http://$app_name.backend.com;
    }
}

이 구성에서 키워드 ACL은 요청된 URL 이름에서 요청된 애플리케이션과 일치하며, 프록시 지시문을 통해 클라이언트의 요청을 해당 백엔드 애플리케이션으로 라우팅합니다.

블랙리스트 기반 ACL

블랙리스트 ACL은 특정 IP 또는 요청된 URL의 액세스를 차단하는 데 사용되는 방법입니다. 이 접근 방식은 일부 상황에서 매우 유용합니다. 예를 들어 악의적인 공격이 발생하는 경우 관리자는 Nginx 리버스 프록시에서 블랙리스트 ACL을 구성하여 IP 주소 그룹에 대한 액세스를 거부할 수 있습니다. 블랙리스트 ACL을 사용하여 특정 일반적인 공격 URL을 거부할 수도 있습니다.

블랙리스트 기반 ACL을 구성하는 방법은 다음과 같습니다.

http {
    ...
    # 黑名单acl
    geo $blocked_ip {
        default 0;
        include /path/to/blacklists/ip.txt;
    }
}

이 구성에서 geo 지시문은 차단된 IP 주소 목록을 저장하는 데 사용되는 $blocked_ip라는 메모리 변수를 정의합니다. 이 예에서는 외부 IP 주소 블랙리스트 파일이 사용됩니다. 파일 형식은 다음과 같습니다.

10.2.1.10 1;
192.168.0.0/24 1;
202.102.85.154 1;

파일의 각 줄에는 CIDR 형식의 IP 주소 또는 네트워크 세그먼트가 포함되어 있으며 그 뒤에는 이 IP 주소 또는 CIDR 네트워크 세그먼트가 차단되었음을 나타내는 숫자 1이 표시됩니다.

다음으로 Nginx 구성에서 이 블랙리스트 ACL을 사용할 수 있습니다.

server {
    ...
    location / {
        ...
        # 配置黑名单ACL
        if ($blocked_ip) {
            return 403;
        }
        proxy_pass http://backend.com;
    }
}

이 구성에서는 if 지시문을 사용하여 요청된 IP 주소가 블랙리스트에 있는지 확인합니다. 그렇다면 403 액세스 금지 응답이 직접 반환됩니다. . 그렇지 않으면 요청이 백엔드 프록시 서버로 라우팅됩니다.

요약하자면, Nginx 리버스 프록시는 매우 유연한 요청 라우팅 및 액세스 제어를 달성하기 위해 다른 기능 모듈과 함께 사용할 수 있는 우수한 ACL 모듈을 제공합니다. 역방향 프록시를 사용할 때 이러한 방법을 이해하고 익히면 다양한 상황에 더 잘 적응하고 네트워크 서비스의 품질과 보안을 향상시킬 수 있습니다.

위 내용은 Nginx 리버스 프록시의 키워드 및 블랙리스트를 기반으로 한 ACL 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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