ngx_stream_geo_module

ngx_stream_geo_module 모듈(1.11.3)은 클라이언트 IP 주소에 따라 값을 포함한 변수를 생성합니다.

예제 구성

geo $geo {
    default        0;

    127.0.0.1      2;
    192.168.1.0/24 1;
    10.1.0.0/16    1;

    ::1            2;
    2001:0db8::/32 1;
}

Directives

Syntax:  geo [$address] $variable { ... }
Default: —
Context: stream

클라이언트 IP 주소에서 지정된 변수 값의 종속성을 설명합니다. 기본적으로 주소는 $remote_addr 변수에서 가져오지만, 다른 변수에서도 가져올 수 있습니다. 예를 들어, 다음을 참고하세요.

geo $arg_remote_addr $geo {
    ...;
}

변수는 사용할 때만 평가되므로 선언된 “geo” 변수가 다수 존재하는 것만으로는 연결 처리에 추가 비용이 발생하지 않습니다.

변수 값이 유효한 IP 주소를 나타내지 않을 경우 “255.255.255.255” 주소를 사용합니다.

주소는 CIDR 표기법의 접두사(개별 주소 포함)나 범위로 지정됩니다.

다음의 특수 매개변수도 지원됩니다.

delete

지정된 네트워크를 삭제합니다.

default

클라이언트 주소가 지정된 주소와 일치하지 않을 경우 값을 변수로 설정합니다. 주소를 CIDR 표기법으로 지정하는 경우, default 대신 “0.0.0.0/0” 및 “::/0″을 사용할 수 있습니다. default를 지정하지 않는 경우, 기본 값은 빈 문자열이 됩니다.

include

주소와 값이 있는 파일을 포함합니다. 여러 가지가 포함될 수 있습니다.

ranges

주소가 범위로 지정된 것을 나타냅니다. 이 매개변수가 처음이 되어야 합니다. 위치 기반 로드 속도를 높이려면 주소를 오름차순으로 입력해야 합니다.

예:

geo $country {
    default        ZZ;
    include        conf/geo.conf;
    delete         127.0.0.0/16;

    127.0.0.0/24   US;
    127.0.0.1/32   RU;
    10.1.0.0/16    RU;
    192.168.1.0/24 UK;
}

conf/geo.conf 파일에는 다음의 행을 포함할 수 있습니다.

10.2.0.0/16    RU;
192.168.2.0/24 RU;

가장 가깝게 일치하는 값을 사용합니다. 예를 들어 127.0.0.1 주소에 대해서는 “US”가 아니라 “RU” 값을 선택합니다.

예시 범위:

geo $country {
    ranges;
    default                   ZZ;
    127.0.0.0-127.0.0.0       US;
    127.0.0.1-127.0.0.1       RU;
    127.0.0.1-127.0.0.255     US;
    10.1.0.0-10.1.255.255     RU;
    192.168.1.0-192.168.1.255 UK;
}