ngx_http_geo_module

ngx_http_geo_module 모듈은 클라이언트 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: http

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

geo $arg_remote_addr $geo {
    ...;
}

변수는 사용할 때만 평가되므로 선언된 “geo” 변수가 많더라도 요청 처리에 추가 비용을 발생시키지 않습니다.

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

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

IPv6 접두사는 버전 1.3.10 및 1.2.7부터 지원됩니다.

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

delete

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

default

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

include

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

proxy

신뢰할 수 있는 주소를 정의합니다(0.8.7, 0.7.63). 요청을 신뢰할 수 있는 주소에서 수신할 경우, 대신 “X-Forwarded-For” 요청 헤더 필드를 사용합니다. 정규 주소와 달리, 신뢰할 수 있는 주소는 순차적으로 검사합니다.

신뢰할 수 있는 IPv6 주소는 버전 1.3.0 및 1.2.1부터 지원됩니다.

proxy_recursive

재귀 주소 검색을 활성화합니다(1.3.0, 1.2.1). 재귀 검색이 비활성화되면 신뢰할 수 있는 주소 중 하나와 일치하는 원본 클라이언트 주소 대신 “X-Forwarded-For”에서 마지막으로 전송된 주소를 사용합니다. 재귀 검색이 활성화되면 신뢰할 수 있는 주소 중 하나와 일치하는 원본 클라이언트 주소 대신 “X-Forwarded-For”에서 마지막으로 전송한 신뢰할 수 없는 주소를 사용합니다.

ranges

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

예:

geo $country {
    default        ZZ;
    include        conf/geo.conf;
    delete         127.0.0.0/16;
    proxy          192.168.100.0/24;
    proxy          2001:0db8::/32;

    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;
}