ngx_http_proxy_module

ngx_http_proxy_module 모듈을 통해 다른 서버에 요청을 전달할 수 있습니다.

예제 구성

location / {
    proxy_pass       http://localhost:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}

Directives

Syntax:	 proxy_bind address [transparent] | off;
Default: —
Context: http, server, location
This directive appeared in version 0.8.22.

프록시 설정된 서버로 나가는 연결이 포트 옵션이 있는 지정된 로컬 IP 주소에서 시작되도록 합니다(1.11.2). 매개변수 값에는 변수(1.3.12)가 포함될 수 있습니다. 특수 값 off(1.3.12)는 이전 구성 수준에서 상속된 proxy_bind 명령의 효과를 취소하고 이를 통해 시스템은 로컬 IP 주소 및 포트를 자동 할당할 수 있습니다.

transparent 매개변수(1.11.0)를 사용하여 프록시 설정된 서버로 나가는 연결이 비로컬 IP 주소, 예를 들어 클라이언트의 실제 IP 주소에서 시작될 수 있습니다.

proxy_bind $remote_addr transparent;

이 매개변수가 작동하기 위해서는 일반적으로 슈퍼 사용자 권한으로 nginx 작업자 프로세스를 실행해야 합니다. Linux에서 이것은 transparent 매개변수가 지정된 것처럼 필수가 아니고(1.13.8) 작업자 프로세스는 마스터 프로세스에서 CAP_NET_RAW 기능을 상속합니다. 또한 프록시 설정된 서버에서 네트워크 트래픽을 가로채도록 커널 라우팅 테이블을 구성해야 합니다.

Syntax:	 proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location

프록시 설정된 서버에서 수신한 응답의 첫 번째 부분을 읽기 위해 사용된 버퍼의 크기를 설정합니다. 이 부분에는 일반적으로 작은 응답 헤더가 포함됩니다. 기본적으로 버퍼 크기는 메모리 페이지 1개와 같습니다. 플랫폼에 따라 4K 또는 8K가 됩니다. 하지만 크기는 더 줄일 수 있습니다.

Syntax:  proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location

프록시 설정된 서버에서 응답의 버퍼링을 활성화하거나 비활성화합니다.

버퍼링이 활성화되면 nginx는 가능한 한 빨리 프록시 설정된 서버에서 응답을 수신하여 proxy_buffer_sizeproxy_buffers 명령으로 설정된 버퍼에 저장합니다. 전체 응답이 메모리에 맞지 않으면 일부를 디스크의 임시 파일에 저장할 수 있습니다. 임시 파일에 쓰기는 proxy_max_temp_file_sizeproxy_temp_file_write_size 명령으로 제어됩니다.

버퍼링이 비활성화되면 응답이 수신되자마자 클라이언트로 동시에 전달됩니다. Nginx는 프록시 설정된 서버에서 전체 응답을 읽으려 하지 않습니다. nginx가 한 번에 서버에서 수신할 수 있는 데이터의 최대 크기는 proxy_buffer_size 명령으로 설정됩니다.

버퍼링은 “X-Accel-Buffering” 응답 헤더 필드에서 “예” 또는 “아니요”를 전달하여 활성화하거나 비활성화할 수도 있습니다. 이 기능은 proxy_ignore_headers 명령을 사용하여 비활성화할 수 있습니다.

Syntax:	 proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location

단일 연결의 경우 프록시 설정된 서버에서 응답을 읽는 데 사용되는 버퍼의 크기를 설정합니다. 기본적으로 버퍼 크기는 메모리 페이지 1개와 같습니다. 플랫폼에 따라 4K 또는 8K가 됩니다.

Syntax:	 proxy_busy_buffers_size size;
Default: proxy_busy_buffers_size 8k|16k;
Context: http, server, location

프록시 설정된 서버의 응답 버퍼링이 활성화되면 클라이언트에 응답을 전송하는 데 사용할 수 있는 버퍼의 총 크기가 제한되고 응답이 아직 완전히 읽히지 않습니다. 그동안 나머지 버퍼가 응답을 읽는 데 사용될 수 있고 필요한 경우 임시 파일에 대한 응답의 버퍼링 부분이 사용됩니다. 기본적으로, 크기proxy_buffer_sizeproxy_buffers 명령으로 설정된 2개 버퍼의 크기로 제한됩니다.

Syntax:  proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location

캐싱에 사용되는 공유 메모리 영역을 정의합니다. 동일한 영역이 여러 위치에서 사용될 수 있습니다. 매개변수 값에는 변수(1.7.9)가 포함될 수 있습니다. off 매개변수는 이전 구성 수준에서 상속된 캐싱을 비활성화합니다.

Syntax:  proxy_cache_background_update on | off;
Default: proxy_cache_background_update off;
Context: http, server, location
This directive appeared in version 1.11.10.

백그라운드 하위 요청을 시작하여 만료된 캐시 항목을 업데이트할 수 있고 그동안 오래된 캐시된 응답이 클라이언트로 반환됩니다. 오래된 캐시된 응답이 업데이트될 때 해당 응답의 사용을 허용해야 합니다.

Syntax:  proxy_cache_bypass string ...;
Default: —
Context: http, server, location

캐시에서 응답을 가져오지 않는 조건을 정의합니다. 문자열 매개변수의 하나 이상의 값이 비어 있지 않고 “0”과 같지 않으면 캐시에서 응답을 가져오지 않습니다.

proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma    $http_authorization;

proxy_no_cache 명령과 함께 사용할 수 있습니다.

Syntax:  proxy_cache_convert_head on | off;
Default: proxy_cache_convert_head on;
Context: http, server, location
This directive appeared in version 1.9.7.

캐싱을 위해 “HEAD” 메서드를 “GET”으로 변환하는 것을 활성화하거나 비활성화합니다. 변환이 비활성화되면 cache key는 $request_method를 포함하도록 구성되어야 합니다.

Syntax:  proxy_cache_key string;
Default: proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location

예를 들어, 캐싱의 키를 정의합니다.

proxy_cache_key "$host$request_uri $cookie_user";

기본적으로 명령 값은 문자열에 가깝습니다.

proxy_cache_key $scheme$proxy_host$uri$is_args$args;
Syntax:  proxy_cache_lock on | off;
Default: proxy_cache_lock off;
Context: http, server, location
This directive appeared in version 1.1.12.

활성화되면 프록시 설정된 서버로 요청을 전달하여 한 번에 하나의 요청만 proxy_cache_key 명령에 따라 식별된 새 캐시 요소를 채울 수 있습니다. 동일한 캐시 요소의 다른 요청은 proxy_cache_lock_timeout 명령으로 설정된 시간까지 응답이 이 요소가 릴리스될 캐시 또는 캐시 잠금에 표시될 때까지 기다립니다.

Syntax:  proxy_cache_lock_age time;
Default: proxy_cache_lock_age 5s;
Context: http, server, location
This directive appeared in version 1.7.8.

새 캐시 요소를 채우기 위해 프록시 설정된 서버로 전달된 마지막 요청이 지정된 시간 동안 완료되지 않았으면 프록시 설정된 서버로 요청이 하나 더 전달될 수 있습니다.

Syntax:  proxy_cache_lock_timeout time;
Default: proxy_cache_lock_timeout 5s;
Context: http, server, location
This directive appeared in version 1.1.12.

proxy_cache_lock에 대한 시간제한을 설정합니다. 시간이 만료되면 요청이 프록시 설정된 서버로 전달되지만 응답은 캐시되지 않습니다.

1.7.8 이전에는 응답을 캐시할 수 있었습니다.

Syntax:  proxy_cache_max_range_offset number;
Default: —
Context: http, server, location
This directive appeared in version 1.11.6.

바이트 범위 요청에 대해 바이트 단위로 오프셋을 설정합니다. 범위가 오프셋을 넘어서면 범위 요청이 프록시 설정된 서버로 전달되고 응답이 캐시되지 않습니다.

Syntax:  proxy_cache_methods GET | HEAD | POST ...;
Default: proxy_cache_methods GET HEAD;
Context: http, server, location
This directive appeared in version 0.7.59.

클라이언트 요청 메서드가 이 명령에 나열되면 응답이 캐시됩니다. “GET” 및 “HEAD” 메서드는 항상 목록에 추가되지만 명시적으로 지정하는 것이 좋습니다. proxy_no_cache 명령도 참조하세요.

Syntax:  proxy_cache_min_uses number;
Default: proxy_cache_min_uses 1;
Context: http, server, location

이후에 응답이 캐시되는 요청 를 설정합니다.

Syntax:  proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] 
         [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] 
         [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] 
         [purger_sleep=time] [purger_threshold=time];
Default: —
Context: http

캐시의 경로와 다른 매개변수를 설정합니다. 캐시 데이터는 파일에 저장됩니다. 캐시의 파일 이름은 MD5 함수를 캐시 키에 적용한 결과입니다. levels 매개변수가 1~3의 캐시 계층 구조 수준을 정의하고 각 수준은 값 1 또는 2를 수락합니다. 예를 들어, 다음 구성에서

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;

캐시의 파일 이름은 다음과 같습니다.

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

캐시된 응답은 먼저 임시 파일에 기록된 다음 파일 이름이 변경됩니다. 버전 0.8.9부터 임시 파일과 캐시는 다른 파일 시스템에 넣을 수 있습니다. 하지만 이 경우 비용이 적게 드는 이름 변경 작업 대신 2개의 파일 시스템 전체에서 파일이 복사됩니다. 따라서 주어진 위치에서 캐시와 임시 파일 포함 디렉터리 모두 동일한 파일 시스템에 넣는 것이 좋습니다. 임시 파일용 디렉터리는 use_temp_path 매개변수(1.7.10)를 기준으로 설정됩니다. 매개변수가 생략되거나 값 on으로 설정되면 주어진 위치에서 proxy_temp_path 명령으로 설정된 디렉터리가 사용됩니다.  값이 off로 설정되면 임시 파일이 캐시 디렉터리에 직접 배치됩니다.

또한 모든 활성 키 및 데이터에 대한 정보는 공유 메모리 영역에 저장됩니다. 공유 메모리 영역의 이름크기는 keys_zone 매개변수로 구성됩니다. 하나의 메가바이트 영역은 약 8천 개 키를 저장할 수 있습니다.

상업용 구독의 일부로 공유 메모리 영역은 확장된 캐시 정보도 저장하므로 동일한 키 수에 대해 더 큰 영역 크기를 지정해야 합니다. 예를 들어, 하나의 메가바이트 영역은 약 4천 개 키를 저장할 수 있습니다.

inactive 매개변수로 지정된 시간 동안 액세스되지 않은 캐시된 데이터는 최신 여부에 관계없이 캐시에서 제거됩니다. 기본적으로, 비활성은 10분으로 설정됩니다.

특수한 “캐시 관리자” 프로세스는 max_size 매개변수로 설정된 최대 캐시 크기와 캐시가 포함된 파일 시스템의 min_free(1.19.1) 매개변수로 설정된 최소 사용 가능 공간 크기를 모니터링합니다. 크기가 초과되거나 충분한 사용 가능 공간이 없으면 가장 최근에 사용한 데이터를 제거합니다. 데이터는 manager_files, manager_threshold 및 manager_sleep 매개변수(1.11.5)로 구성된 반복에서 제거됩니다. 1회 이터레이션에서는 manager_files보다 적은 수의 항목이 삭제됩니다(기본값: 100). 한 번 반복의 기간은 manager_threshold 매개변수로 제한됩니다(기본적으로 200밀리초). 반복 사이에 manager_sleep 매개변수로 구성된 일시 중지(기본적으로 50밀리초)가 실행됩니다.

시작 1분 후에 특수한 “캐시 로더” 프로세서가 작동합니다. 그러면 파일 시스템에 저장된 이전에 캐시된 데이터에 대한 정보가 캐시 영역으로 로드됩니다. 로딩도 반복적으로 수행됩니다. 1회 이터레이션에서는 loader_files보다 적은 수의 항목이 로드됩니다(기본값: 100). 또한, 한 번의 반복 기간은 loader_threshold 매개변수로 제한됩니다(기본적으로 200밀리초). 반복 사이에 loader_sleep 매개변수로 구성된 일시 중지(기본적으로 50밀리초)가 실행됩니다.

또한 다음 매개변수가 상업용 구독의 일부로 사용 가능합니다.

purger=on|off

와일드카드 키와 일치하는 캐시 항목이 캐시 퍼저(purger)(1.7.12)에 의해 디스크에서 제거될지를 지시합니다. 매개변수를 on(기본값은 off)으로 설정하면 모든 캐시 항목을 통해 영구적으로 반복되고 와일드카드 키와 일치하는 항목을 삭제하는 “캐시 퍼저” 프로세스가 작동합니다.

purger_files=number

한 번의 반복 동안 스캔되는 항목 수를 설정합니다(1.7.12). 기본적으로 purger_files를 10으로 설정합니다.

purger_threshold=number

한 번의 반복 기간이 설정됩니다(1.7.12). 기본적으로 purger_threshold는 50밀리초로 설정됩니다.

purger_sleep=number

반복 사이의 일시 중지를 설정합니다(1.7.12). 기본적으로 purger_sleep은 50밀리초로 설정됩니다.

버전 1.7.3, 1.7.7 및 1.11.10에서 캐시 헤더 형식이 변경되었습니다. 이전에 캐시된 응답은 최신 nginx 버전으로 업그레이드 후에 잘못된 것으로 간주됩니다.

Syntax:  proxy_cache_purge string ...;
Default: —
Context: http, server, location
This directive appeared in version 1.5.7.

요청이 캐시 제거 요청으로 간주되는 조건을 정의합니다. 문자열 매개변수의 하나 이상의 값이 비어 있지 않고 “0”과 같지 않으면 해당하는 캐시 키가 있는 캐시 항목이 제거됩니다. 성공적인 작업의 결과는 204(콘텐츠 없음) 응답을 반환하여 표시됩니다.

제거 요청의 캐시 키가 별표(“*”)로 끝나는 경우 와일드 카드 키와 일치하는 모든 캐시 항목이 캐시에서 제거됩니다. 그러나 이러한 항목은 비활성을 위해 삭제되거나 캐시 퍼저(1.7.12)에 의해 처리되거나 클라이언트가 항목에 액세스를 시도할 때까지 디스크에 남습니다.

예제 구성:

proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;

map $request_method $purge_method {
    PURGE   1;
    default 0;
}

server {
    ...
    location / {
        proxy_pass http://backend;
        proxy_cache cache_zone;
        proxy_cache_key $uri;
        proxy_cache_purge $purge_method;
    }
}

이 기능은 상업용 구독의 일부로 사용 가능합니다.

Syntax:  proxy_cache_revalidate on | off;
Default: proxy_cache_revalidate off;
Context: http, server, location
This directive appeared in version 1.5.7.

“If-Modified-Since” 및 “If-None-Match” 헤더 필드를 포함하는 조건부 요청을 사용하여 만료된 캐시 항목의 재검증을 활성화합니다.

Syntax:  proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | 
         http_504 | http_403 | http_404 | http_429 | off ...;
Default: proxy_cache_use_stale off;
Context: http, server, location

프록시 설정된 서버와 통신하는 동안 오래된 캐시된 응답을 사용할 수 있는 경우를 결정합니다. 명령의 매개변수는 proxy_next_upstream 명령의 매개변수와 일치합니다.

error 매개변수도 요청을 처리하는 프록시 설정된 서버를 선택할 수 없는 경우 오래된 캐시된 응답의 사용을 허용합니다.

또한, updating 매개변수는 현재 업데이트되고 있는 경우 오래된 캐시된 응답의 사용을 허용합니다. 이에 따라 캐시된 데이터를 업데이트할 때 프록시 설정된 서버에 대한 액세스 수가 최소화될 수 있습니다.

오래된 캐시된 응답의 사용은 응답이 오래된 후(1.11.10) 지정된 초 수 동안 응답 헤더에서 직접 활성화할 수도 있습니다. 이 방식은 명령 매개변수 사용보다 우선순위가 떨어집니다.

  • “Cache-Control” 헤더 필드의 “stale-while-revalidate” 확장은 현재 업데이트되고 있는 경우 오래된 캐시된 응답의 사용을 허용합니다.
  • “Cache-Control” 헤더 필드의 “stale-if-error” 확장은 오류 발생 시 오래된 캐시된 응답의 사용을 허용합니다.

새로운 캐시 요소를 채울 때 프록시 설정된 서버에 대한 액세스 수를 최소화하려면 proxy_cache_lock 명령을 사용할 수 있습니다.

Syntax:  proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location

다른 응답 코드에 대한 캐싱 시간을 설정합니다. 예를 들어, 다음 명령은

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;

코드 200 및 302가 포함된 응답에 대해 10분의 캐싱을 설정하고 코드 404가 포함된 응답에 대해 1분의 캐싱을 설정합니다.

캐싱 시간만 지정된 경우

proxy_cache_valid 5m;

200, 301, 302 응답만 캐시됩니다.

또한 any 매개변수는 모든 응답을 캐시하기 위해 지정할 수 있습니다.

proxy_cache_valid 200 302 10m;
proxy_cache_valid 301      1h;
proxy_cache_valid any      1m;

캐싱의 매개변수는 응답 헤더에서 직접 설정할 수도 있습니다. 이 방식은 명령을 사용한 캐싱 시간 설정보다 우선순위가 높습니다.

  • “X-Accel-Expires” 헤더 필드는 응답의 캐싱 시간을 초 단위로 설정합니다. 0 값은 응답에 대한 캐싱을 비활성화합니다. 값이 @ 접두사로 시작하는 경우, Epoch가 시작되고 경과한 절대 시간(초)을 설정하면 그 시간까지 응답을 캐싱할 수 있습니다.
  • 헤더에 “X-Accel-Expires” 필드가 포함되지 않은 경우 캐싱의 매개변수는 헤더 필드 “Expires” 또는 “Cache-Control”에서 설정할 수 있습니다.
  • 헤더에 “Set-Cookie” 필드가 포함되면 그러한 응답은 캐시되지 않습니다.
  • 헤더에 특수 값 “*”와 함께 “Vary” 필드가 포함되는 경우 그러한 응답은 캐시되지 않습니다(1.7.7). 헤더에 다른 값과 함께 “Vary” 필드가 포함된 경우 그러한 응답은 해당하는 요청 헤더 필드를 고려하여 캐시됩니다(1.7.7).

하나 이상의 이러한 응답 헤더 필드의 처리는 proxy_ignore_headers 명령을 사용하여 비활성화할 수 있습니다.

Syntax:  proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location

프록시 설정된 서버와의 연결을 설정하기 위한 시간제한을 정의합니다. 이 시간제한은 일반적으로 75초를 초과할 수 없다는 점을 유념해야 합니다.

Syntax:  proxy_cookie_domain off;
  
         proxy_cookie_domain domain replacement;
Default: proxy_cookie_domain off;
Context: http, server, location
This directive appeared in version 1.1.15.

프록시 설정된 서버 응답의 “Set-Cookie” 헤더 필드의 domain 특성에서 변경되어야 하는 텍스트를 설정합니다. 프록시 설정된 서버가 특성 “domain=localhost”와 함께 “Set-Cookie” 헤더 필드를 반환했다고 가정합니다. 명령은

proxy_cookie_domain localhost example.org;

“domain=example.org”로 이 특성을 다시 기록합니다.

domainreplacement 문자열 시작 위치의 점과 domain 특성은 무시됩니다. 일치는 대소문자를 구분하지 않습니다.

domainreplacement 문자열은 다음 변수를 포함할 수 있습니다.

proxy_cookie_domain www.$host $host;

명령은 정규식을 사용하여 지정할 수도 있습니다. 이 경우, domain 은 “~” 기호에서 시작해야 합니다. 정규식은 이름 지정된 캡처 및 위치 캡처를 포함할 수 있고 replacement는 이러한 캡처를 참조할 수 있습니다.

proxy_cookie_domain ~\.(?P<sl_domain>[-0-9a-z]+\.[a-z]+)$ $sl_domain;

여러 proxy_cookie_domain 명령은 동일한 수준에서 지정할 수 있습니다.

proxy_cookie_domain localhost example.org;
proxy_cookie_domain ~\.([a-z]+\.[a-z]+)$ $1;

여러 명령을 쿠키에 적용할 수 있는 경우 첫 번째 일치 명령이 선택됩니다.

off 매개변수는 이전 구성 수준에서 상속된 proxy_cookie_domain 명령의 효과를 취소합니다.

Syntax:  proxy_cookie_flags off | cookie [flag ...];
Default: proxy_cookie_flags off;
Context: http, server, location
This directive appeared in version 1.19.3.

쿠키에 대해 하나 이상의 플래그를 설정합니다. 쿠키는 텍스트, 변수 및 그 조합을 포함할 수 있습니다. 플래그는 텍스트, 변수 및 그 조합을 포함할 수 있습니다(1.19.8). secure, httponly, samesite=strict, samesite=lax, samesite=none 매개변수는 구성 플래그를 추가합니다. nosecure, nohttponly, nosamesite 매개변수는 해당하는 플래그를 제거합니다.

쿠키는 정규식을 사용하여 지정할 수도 있습니다. 이 경우, cookie는 “~” 기호에서 시작해야 합니다.

여러 proxy_cookie_flags 명령은 동일한 구성 수준에서 지정할 수 있습니다.

proxy_cookie_flags one httponly;
proxy_cookie_flags ~ nosecure samesite=strict;

여러 명령을 쿠키에 적용할 수 있는 경우 첫 번째 일치 명령이 선택됩니다. 예에서 httponly 플래그는 쿠키 one에 추가됩니다. 다른 모든 쿠키의 경우 samesite=strict 플래그가 추가되고 secure 플래그가 삭제됩니다.

off 매개변수는 이전 구성 수준에서 상속된 proxy_cookie_flags 명령의 효과를 취소합니다.

Syntax:  proxy_cookie_path off;
         proxy_cookie_path path replacement;
Default: proxy_cookie_path off;
Context: http, server, location
This directive appeared in version 1.1.15.

프록시 설정된 서버 응답의 “Set-Cookie” 헤더 필드의 path 특성에서 변경되어야 하는 텍스트를 설정합니다. 프록시 설정된 서버가 특성 “path=/two/some/uri/”와 함께 “Set-Cookie” 헤더 필드를 반환했다고 가정합니다. 명령은

proxy_cookie_path /two/ /;

“path=/some/uri/”로 이 속성을 다시 작성합니다.

pathreplacement 문자열은 다음 변수를 포함할 수 있습니다.

proxy_cookie_path $uri /some$uri;

명령은 정규식을 사용하여 지정할 수도 있습니다. 이 경우, path는 대소문자를 구분하는 일치의 경우 “~” 기호에서 시작하고 또는 대소문자를 구분하지 않는 일치의 경우 “~*” 기호에서 시작해야 합니다. 정규식은 이름 지정된 캡처 및 위치 캡처를 포함할 수 있고 replacement는 이러한 캡처를 참조할 수 있습니다.

proxy_cookie_path ~*^/user/([^/]+) /u/$1;

여러 proxy_cookie_path 명령은 동일한 수준에서 지정할 수 있습니다.

proxy_cookie_path /one/ /;
proxy_cookie_path / /two/;

여러 명령을 쿠키에 적용할 수 있는 경우 첫 번째 일치 명령이 선택됩니다.

off 매개변수는 이전 구성 수준에서 상속된 proxy_cookie_path 명령의 효과를 취소합니다.

Syntax:  proxy_force_ranges on | off;
Default: proxy_force_ranges off;
Context: http, server, location
This directive appeared in version 1.7.7.

이러한 응답의 “Accept-Ranges” 필드와 관계없이 프록시 설정된 서버로부터의 캐시된 응답과 캐시되지 않은 응답 모두에 대해 바이트 범위 지원을 활성화합니다.

Syntax:  proxy_headers_hash_bucket_size size;
Default: proxy_headers_hash_bucket_size 64;
Context: http, server, location

proxy_hide_headerproxy_set_header 명령이 사용하는 해시 테이블에 대해 버킷 크기를 설정합니다. 해시 테이블을 설정하는 세부 정보는 별도의 문서에서 제공합니다.

Syntax:  proxy_headers_hash_max_size size;
Default: proxy_headers_hash_max_size 512;
Context: http, server, location

proxy_hide_headerproxy_set_header 명령이 사용하는 해시 테이블의 최대 크기를 설정합니다. 해시 테이블을 설정하는 세부 정보는 별도의 문서에서 제공합니다.

Syntax:  proxy_hide_header field;
Default: —
Context: http, server, location

기본적으로 nginx는 프록시 설정된 서버의 응답에서 클라이언트로 헤더 필드 “Date”, “Server”, “X-Pad” 및 “X-Accel-…”을 전달하지 않습니다. proxy_hide_header 명령은 전달되지 않는 추가 필드를 설정합니다. 반대로 필드 전달을 허용해야 하는 경우 proxy_pass_header 명령을 사용할 수 있습니다.

Syntax:  proxy_http_version 1.0 | 1.1;
Default: proxy_http_version 1.0;
Context: http, server, location
This directive appeared in version 1.1.4.

프록시 설정을 위한 HTTP 프로토콜 버전을 설정합니다. 기본적으로 버전 1.0이 사용됩니다. 버전 1.1은 keepalive 연결 및 NTLM 인증과 함께 사용하는 것이 좋습니다.

Syntax:  proxy_ignore_client_abort on | off;
Default: proxy_ignore_client_abort off;
Context: http, server, location

클라이언트가 응답을 기다리지 않고 연결을 닫을 때 프록시 설정된 서버와의 연결이 닫혀야 하는지를 결정합니다.

Syntax:  proxy_ignore_headers field ...;
Default: —
Context: http, server, location

프록시 설정된 서버의 특정한 응답 헤더 필드 처리를 비활성화합니다. 다음 필드는 무시할 수 있습니다. “X-Accel-Redirect”, “X-Accel-Expires”, “X-Accel-Limit-Rate”(1.1.6), “X-Accel-Buffering”(1.1.6), “X-Accel-Charset”(1.1.6), “Expires”, “Cache-Control”, “Set-Cookie”(0.8.44) 및 “Vary”(1.7.7).

비활성화되지 않으면 이러한 헤더 필드를 처리할 경우 다음과 같은 효과가 있습니다.

  • “X-Accel-Expires”, “Expires”, “Cache-Control”, “Set-Cookie” 및 “Vary”는 응답 캐싱의 매개변수를 설정합니다.
  • “X-Accel-Redirect”는 지정된 URI에 대한 내부 리디렉션을 수행합니다.
  • “X-Accel-Limit-Rate”는 클라이언트에 대한 응답 전송을 위해 속도 제한을 설정합니다.
  • “X-Accel-Buffering”은 응답의 버퍼링을 활성화하거나 비활성화합니다.
  • “X-Accel-Charset”은 응답의 원하는 charset을 설정합니다.
Syntax:  proxy_intercept_errors on | off;
Default: proxy_intercept_errors off;
Context: http, server, location

코드가 300보다 크거나 같은 프록시 설정된 서버 응답이 클라이언트에 전달되어야 하는지 아니면 error_page 명령으로 처리하기 위해 가로채서 nginx로 리디렉션해야 하는지 결정합니다.

Syntax:  proxy_limit_rate rate;
Default: proxy_limit_rate 0;
Context: http, server, location
This directive appeared in version 1.7.7.

프록시 설정된 서버에서의 응답을 읽는 속도를 제한합니다. 속도는 초당 바이트로 지정됩니다. 0 값은 속도 제한을 비활성화합니다. 제한은 요청당 설정되므로 nginx가 프록시 설정된 서버에 대한 2개의 연결을 동시에 연 경우 전체 속도는 지정된 속도의 2배입니다. 제한은 프록시 설정된 서버에서의 응답 버퍼링이 활성화된 경우에만 작동합니다.

Syntax:  proxy_max_temp_file_size size;
Default: proxy_max_temp_file_size 1024m;
Context: http, server, location

프록시 설정된 서버에서의 응답 버퍼링이 활성화되고 전체 응답이 proxy_buffer_sizeproxy_buffers 명령으로 설정된 버퍼에 맞지 않으면 응답의 일부가 임시 파일로 저장될 수 있습니다. 이 명령은 임시 파일의 최대 크기를 설정합니다. 한 번에 임시 파일에 기록되는 데이터의 크기는 proxy_temp_file_write_size 명령으로 설정됩니다.

0 값은 임시 파일에 대한 응답의 버퍼링을 비활성화합니다.

이 제한은 캐시되거나 디스크에 저장될 응답에는 적용되지 않습니다.

Syntax:  proxy_method method;
Default: —
Context: http, server, location

클라이언트 요청의 메서드 대신 프록시 설정된 서버로 전달된 요청에서 사용할 HTTP 메서드를 지정합니다. 매개변수 값에는 변수(1.11.6)가 포함될 수 있습니다.

Syntax:  proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | 
         http_403 | http_404 | http_429 | non_idempotent | off ...;
Default: proxy_next_upstream error timeout;
Context: http, server, location

요청이 다음 서버에 전달되어야 하는 경우를 지정합니다.

error

서버와의 연결을 설정하고 요청을 서버에 전달하거나 응답 헤더를 읽는 동안 오류 발생

timeout

서버와의 연결을 설정하고 요청을 서버에 전달하거나 응답 헤더를 읽는 동안 시간제한 발생

invalid_header

서버가 비어 있거나 잘못된 응답을 반환함

http_500

서버가 코드 500과 함께 응답을 반환함

http_502

서버가 코드 502와 함께 응답을 반환함

http_503

서버가 코드 503과 함께 응답을 반환함

http_504

서버가 코드 504와 함께 응답을 반환함

http_403

서버가 코드 403과 함께 응답을 반환함

http_404

서버가 코드 404와 함께 응답을 반환함

http_429

서버가 코드 429(1.11.13)와 함께 응답을 반환함

non_idempotent

일반적으로 non-idempotent 메서드(POST, LOCK, PATCH)를 포함하는 요청은 요청이 업스트림 서버(1.9.13)로 전송된 경우 다음 서버에 전달되지 않습니다. 이 옵션을 활성화하면 그러한 요청의 재시도가 명시적으로 허용됩니다.

off

다음 서버로의 요청 전달이 비활성화됩니다.

다음 서버로의 요청 전달은 아직 클라이언트에 아무것도 전송되지 않은 경우에만 가능합니다. 즉, 응답 전송 중에 오류 또는 시간제한이 발생하는 경우 이를 수정하는 것은 불가능합니다.

명령은 또한 서버와의 통신의 실패한 시도로 간주되는 것도 정의합니다. error, timeout 및 invalid_header는 명령에 지정되지 않더라도 항상 실패한 시도로 간주됩니다. http_500, http_502, http_503, http_504 및 http_429의 경우는 명령에 지정된 경우에만 실패한 시도로 간주됩니다. http_403 및 http_404의 경우는 절대 실패한 시도로 간주되지 않습니다.

요청을 다음 서버로 전달하는 것은 시도 수시간에 의해 제한될 수 있습니다.

Syntax:  proxy_next_upstream_timeout time;
Default: proxy_next_upstream_timeout 0;
Context: http, server, location
This directive appeared in version 1.7.5.

요청을 다음 서버로 전달할 수 있는 기간을 제한합니다. 0 값은 이 제한을 해제합니다.

Syntax:  proxy_next_upstream_tries number;
Default: proxy_next_upstream_tries 0;
Context: http, server, location
This directive appeared in version 1.7.5.

요청을 다음 서버로 전달할 수 있는 가능한 시도 수를 제한합니다. 0 값은 이 제한을 해제합니다.

Syntax:  proxy_no_cache string ...;
Default: —
Context: http, server, location

응답이 캐시에 저장되지 않는 조건을 정의합니다. 문자열 매개변수의 하나 이상의 값이 비어 있지 않고 “0”과 같지 않으면 응답이 저장되지 않습니다.

proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma    $http_authorization;

proxy_cache_bypass 명령과 함께 사용할 수 있습니다.

Syntax:  proxy_pass URL;
Default: —
Context: location, if in location, limit_except

프록시 설정된 서버의 프로토콜 및 주소와 위치가 매핑되어야 하는 URI 옵션을 설정합니다. 프로토콜로, “http” 또는 “https”를 지정할 수 있습니다. 주소는 도메인 이름 또는 IP 주소 및 포트 옵션으로 지정할 수 있습니다.

proxy_pass http://localhost:8000/uri/;

단어 “unix” 뒤에 지정되고 콜론으로 둘러싸인 UNIX-도메인 소켓 경로로 지정할 수 있습니다.

proxy_pass http://unix:/tmp/backend.socket:/uri/;

도메인 이름이 여러 주소로 확인되면 해당하는 모든 주소는 라운드 로빈 방식으로 사용됩니다. 또한, 주소는 서버 그룹으로 지정할 수 있습니다.

매개변수 값에는 변수가 포함될 수 있습니다. 이 경우 주소가 도메인 이름으로 지정되면 이름은 설명된 서버 그룹 중에서 검색되고 없는 경우 resolver를 사용하여 결정됩니다.

요청 URI는 다음과 같이 서버로 전달됩니다.

  • proxy_pass 명령이 URI로 지정되면 요청이 서버에 전달될 때 위치와 일치하는 정규화된 요청 URI의 일부는 명령에 지정된 URI로 대체됩니다.
location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}
  • proxy_pass가 URI 없이 지정되는 경우 요청 URI는 원래 요청이 처리될 때 클라이언트에서 보낸 것과 동일한 형식으로 서버에 전달되거나 변경된 URI를 처리할 때 전체 정규화된 요청 URI가 전달됩니다.
location /some/path/ {
    proxy_pass http://127.0.0.1;
}

버전 1.1.12 이전에 proxy_pass가 URI 없이 지정되면 원래 요청 URI는 일부 경우에 변경된 URI 대신 전달될 수 있습니다.

일부 경우에, 교체할 요청 URI의 부분을 결정할 수 없습니다.

  • 정규식을 사용하고 이름 지정된 위치 내에서도 위치가 지정된 경우.

이러한 경우, proxy_pass는 URI 없이 지정해야 합니다.

  • URI가 rewrite 명령을 사용하여 프록시 설정된 위치 내부에서 변경된 경우 이 동일한 구성이 요청(break)을 처리하는 데 사용됩니다.
location /name/ {
    rewrite    /name/([^/]+) /users?name=$1 break;
    proxy_pass http://127.0.0.1;
}

이 경우 명령에서 지정된 URI는 무시되고 전체 변경된 요청 URI가 서버에 전달됩니다.

  • 변수가 proxy_pass에서 사용된 경우:
location /name/ {
    proxy_pass http://127.0.0.1$request_uri;
}

이 경우, URI가 명령에서 지정되면 그대로 서버에 전달되어 원래 요청 URI를 교체합니다.

WebSocket 프록시 사용에는 특수한 구성이 필요하고 버전 1.3.13 이후 지원됩니다.

Syntax:  proxy_pass_header field;
Default: —
Context: http, server, location

프록시 설정된 서버에서 클라이언트로 다른 방식으로 비활성화된 헤더 필드의 전달을 허용합니다.

Syntax:  proxy_pass_request_body on | off;
Default: proxy_pass_request_body on;
Context: http, server, location

원래 요청 본문이 프록시 설정된 서버로 전달되는지를 나타냅니다.

location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";

    proxy_pass ...
}

proxy_set_headerproxy_pass_request_headers 명령도 참조하세요.

Syntax:  proxy_pass_request_headers on | off;
Default: proxy_pass_request_headers on;
Context: http, server, location

원래 요청의 헤더 필드가 프록시 설정된 서버로 전달되는지 나타냅니다.

location /x-accel-redirect-here/ {
    proxy_method GET;
    proxy_pass_request_headers off;
    proxy_pass_request_body off;

    proxy_pass ...
}

proxy_set_headerproxy_pass_request_body 명령도 참조하세요.

Syntax:  proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location

프록시 설정된 서버에서 응답을 읽기 위한 시간제한을 정의합니다. 시간제한은 전체 응답의 전송에 대해서가 아니라 2개의 연속적인 읽기 작업 사이에서만 설정됩니다. 프록시 설정된 서버가 이 시간 내에 아무것도 전송하지 않으면 연결이 닫힙니다.

Syntax:  proxy_redirect default;
         proxy_redirect off;
         proxy_redirect redirect replacement;
Default:	
         proxy_redirect default;
Context: http, server, location

프록시 설정된 서버 응답의 “Location” 및 “Refresh” 헤더 필드에서 변경되어야 하는 텍스트를 설정합니다. 프록시 설정된 서버가 헤더 필드 “위치: http://localhost:8000/two/some/uri/”를 반환했다고 가정합니다. 명령은

proxy_redirect http://localhost:8000/two/ http://frontend/one/;

“Location: http://frontend/one/some/uri/”로 이 문자열을 다시 기록합니다.

서버 이름은 교체 문자열에서 생략될 수 있습니다.

proxy_redirect http://localhost:8000/two/ /;

그러면 80과 다를 경우 기본 서버의 이름 및 포트가 삽입됩니다.

default 매개변수에서 지정된 기본 교체는 위치proxy_pass 명령의 매개변수를 사용합니다. 그러므로 아래의 2개 구성은 등가입니다.

location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect default;
location /one/ {
    proxy_pass     http://upstream:port/two/;
    proxy_redirect http://upstream:port/two/ /one/;

proxy_pass가 변수를 사용하여 지정된 경우 default 매개변수는 허용되지 않습니다.

replacement 문자열은 변수를 포함할 수 있습니다.

proxy_redirect http://localhost:8000/ http://$host:$server_port/;

redirect는 (1.1.11) 변수도 포함할 수 있습니다.

proxy_redirect http://$proxy_host:8000/ /;

명령은 정규식을 사용하여 지정할 수 있습니다(1.1.11). 이 경우, redirect는 대소문자를 구분하는 일치의 경우 “~” 기호로 시작하고 또는 대소문자를 구분하지 않는 일치의 경우 “~*” 기호로 시작해야 합니다. 정규식은 이름 지정된 캡처 및 위치 캡처를 포함할 수 있고 replacement는 이러한 캡처를 참조할 수 있습니다.

proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
proxy_redirect ~*/user/([^/]+)/(.+)$      http://$1.example.com/$2;

여러 proxy_redirect 명령을 동일한 수준에서 지정할 수 있습니다.

proxy_redirect default;
proxy_redirect http://localhost:8000/  /;
proxy_redirect http://www.example.com/ /;

여러 명령을 프록시 설정된 서버 응답의 헤더 필드에 적용할 수 있는 경우 첫 번째 일치 명령이 선택됩니다.

off 매개변수는 이전 구성 수준에서 상속된 proxy_redirect 명령의 효과를 취소합니다.

이 명령을 사용하여 프록시 설정된 서버에서 발급한 상대 리디렉션에 호스트 이름을 추가하는 것도 가능합니다.

proxy_redirect / /;
Syntax:  proxy_request_buffering on | off;
Default: proxy_request_buffering on;
Context: http, server, location
This directive appeared in version 1.7.11.

클라이언트 요청 본문의 버퍼링을 활성화하거나 비활성화합니다.

버퍼링이 활성화되면 요청을 프록시 설정된 서버에 보내기 전에 전체 요청 본문이 클라이언트에서 읽힙니다.

버퍼링이 비활성화되면 요청 본문이 수신되자마자 즉시 프록시 설정된 서버로 전송됩니다. 이 경우 요청은 nginx가 이미 요청 본문의 전송을 시작한 경우 다음 서버로 전달될 수 없습니다.

HTTP/1.1 청크 분할 전송 인코딩이 원래 요청 본문을 전송하는 데 사용되면 요청 본문은 HTTP/1.1이 프록시 사용을 위해 활성화되지 않는 한 명령 값에 관계없이 버퍼링됩니다.

Syntax:  proxy_send_lowat size;
Default: proxy_send_lowat 0;
Context: http, server, location

명령이 0이 아닌 값으로 설정되면 nginx는 kqueue 메서드의 NOTE_LOWAT 플래그 또는 지정된 크기의 SO_SNDLOWAT 소켓 옵션을 사용하여 프록시 설정된 서버로 나가는 연결에서 전송 작업 수를 최소화하려 합니다.

이 명령은 Linux, Solaris 및 Windows에서 무시됩니다.

Syntax:  proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location

요청을 프록시 설정된 서버로 전송하는 데 대한 시간제한을 설정합니다. 시간제한은 전체 요청의 전송에 대해서가 아니라 2개의 연속적인 쓰기 작업 사이에서만 설정됩니다. 프록시 설정된 서버가 이 시간 내에 아무것도 수신하지 않으면 연결이 닫힙니다.

Syntax:  proxy_set_body value;
Default: —
Context: http, server, location

프록시 설정된 서버에 전달된 요청 본문을 재정의하도록 허용합니다. 은 텍스트, 변수 및 그 조합을 포함할 수 있습니다.

Syntax:  proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
         proxy_set_header Connection close;
Context: http, server, location

프록시 설정된 서버에 전달된 요청 헤더를 재정의하거나 그러한 요청 헤더에 필드를 추가하도록 허용합니다. 은 텍스트, 변수 및 그 조합을 포함할 수 있습니다. 이러한 명령은 현재 수준에서 정의된 proxy_set_header 명령이 없는 경우에만 이전 구성 수준에서 상속됩니다. 기본적으로 단 2개 필드만 재정의됩니다.

proxy_set_header Host       $proxy_host;
proxy_set_header Connection close;

캐싱이 활성화되면 원래 요청의 헤더 필드 “If-Modified-Since”, “If-Unmodified-Since”, “If-None-Match”, “If-Match”, “Range” 및 “If-Range”가 프록시 설정된 서버로 전달되지 않습니다.

변경되지 않은 “Host” 요청 헤더 필드는 다음과 같이 전달할 수 있습니다.

proxy_set_header Host       $http_host;

그러나 이 필드가 클라이언트 요청 헤더에 없으면 아무것도 전달되지 않습니다. 그러한 경우 $host 변수를 사용하는 것이 좋고 해당 값은 “Host” 요청 헤더 필드의 서버 이름 또는 이 필드가 없는 경우 기본 서버 이름과 동일합니다.

proxy_set_header Host       $host;

또한 서버 이름은 프록시 설정된 서버의 포트와 함께 전달될 수 있습니다.

proxy_set_header Host       $host:$proxy_port;

헤더 필드의 값이 비어 있는 문자열이면 이 필드는 프록시 설정된 서버로 전달되지 않습니다.

proxy_set_header Accept-Encoding "";
Syntax:  proxy_socket_keepalive on | off;
Default: proxy_socket_keepalive off;
Context: http, server, location
This directive appeared in version 1.15.6.

프록시된 서버로 나가는 연결에 대한 “TCP keepalive” 동작을 구성합니다. 기본적으로 운영 체제의 설정은 소켓에 대해 유효합니다. 명령에서 “on” 값을 설정하면 해당 소켓에 대해 SO_KEEPALIVE 옵션이 활성화됩니다.

Syntax:  proxy_ssl_certificate file;
Default: —
Context: http, server, location
This directive appeared in version 1.7.8.

프록시 설정된 HTTPS 서버에 대한 인증에 사용된 PEM 형식의 인증서로 파일을 지정합니다.

버전 1.21.0 이후 변수를 파일 이름에 사용할 수 있습니다.

Syntax:  proxy_ssl_certificate_key file;
Default: —
Context: http, server, location
This directive appeared in version 1.7.8.

프록시 설정된 HTTPS 서버에 대한 인증에 사용된 PEM 형식의 비밀 키로 파일을 지정합니다.

값 engine:name:id파일(1.7.9) 대신 지정될 수 있고 이것은 OpenSSL engine 이름에서 지정된 id로 비밀 키를 로드합니다.

버전 1.21.0 이후 변수를 파일 이름에 사용할 수 있습니다.

Syntax:  proxy_ssl_ciphers ciphers;
Default: proxy_ssl_ciphers DEFAULT;
Context: http, server, location
This directive appeared in version 1.5.6.

프록시 설정된 HTTPS 서버에 대한 요청에 대해 활성화된 암호화를 지정합니다. 암호화는 OpenSSL 라이브러리가 이해하는 형식으로 지정됩니다.

전체 목록은 “openssl ciphers” 명령을 사용하여 확인할 수 있습니다.

Syntax:  proxy_ssl_conf_command command;
Default: —
Context: http, server, location
This directive appeared in version 1.19.4.

프록시 설정된 HTTPS 서버와의 연결을 설정할 때 임의의 OpenSSL 구성 명령을 설정합니다.

명령은 OpenSSL 1.0.2 이상을 사용하는 경우 지원됩니다.

여러 proxy_ssl_conf_command 명령은 동일한 수준에서 지정할 수 있습니다. 이러한 명령은 현재 수준에 정의된 proxy_ssl_conf_command 명령이 없는 경우에만 이전 구성 수준에서 상속됩니다.

OpenSSL을 직접 구성하면 예기치 못한 동작이 발생할 수 있습니다.

Syntax:  proxy_ssl_crl file;
Default: —
Context: http, server, location
This directive appeared in version 1.7.0.

프록시 설정된 HTTPS 서버의 인증서를 확인하는 데 사용되는 PEM 형식으로 해지된 인증서(CRL)를 사용하여 파일을 지정합니다.

Syntax:  proxy_ssl_name name;
Default: proxy_ssl_name $proxy_host;
Context: http, server, location
This directive appeared in version 1.7.0.

프록시 설정된 HTTPS 서버의 인증서를 확인하고 프록시 설정된 HTTPS 서버와와 연결을 설정할 때 SNI 통과하는 데 사용되는 서버 이름의 재정의를 허용합니다.

기본적으로 proxy_pass URL의 호스트 부분이 사용됩니다.

Syntax:  proxy_ssl_password_file file;
Default: —
Context: http, server, location
This directive appeared in version 1.7.8.

각 암호가 별도의 행에 지정된 비밀 키에 대한 암호를 사용하여 파일을 지정합니다. 암호는 결과적으로 키를 로드할 때 시도됩니다.

Syntax:  proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
Default: proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
Context: http, server, location
This directive appeared in version 1.5.6.

프록시 설정된 HTTPS 서버에 대한 요청의 지정된 프로토콜을 활성화합니다.

Syntax:  proxy_ssl_server_name on | off;
Default: proxy_ssl_server_name off;
Context: http, server, location
This directive appeared in version 1.7.0.

프록시 설정된 HTTPS 서버와의 연결을 설정할 때 서버 이름이 TLS Server Name Indication 확장(SNI, RFC 6066)을 통과하는 것을 활성화하거나 비활성화합니다.

Syntax:  proxy_ssl_session_reuse on | off;
Default: proxy_ssl_session_reuse on;
Context: http, server, location

프록시 설정된 서버로 작업을 수행할 때 SSL 세션을 재사용할 수 있는지를 결정합니다. 로그에 “SSL3_GET_FINISHED:digest check failed” 오류가 나타날 경우 세션 재사용을 비활성화해보세요.

Syntax:  proxy_ssl_trusted_certificate file;
Default: —
Context: http, server, location
This directive appeared in version 1.7.0.

프록시 설정된 HTTPS 서버의 인증서를 확인하는 데 사용되는 PEM 형식으로 신뢰할 수 있는 CA 인증서를 사용하여 파일을 지정합니다.

Syntax:  proxy_ssl_verify on | off;
Default: proxy_ssl_verify off;
Context: http, server, location
This directive appeared in version 1.7.0.

프록시 설정된 HTTPS 서버 인증서의 확인을 활성화하거나 비활성화합니다.

Syntax:  proxy_ssl_verify_depth number;
Default: proxy_ssl_verify_depth 1;
Context: http, server, location
This directive appeared in version 1.7.0.

프록시 설정된 HTTPS 서버 인증서 체인의 확인 깊이를 설정합니다.

Syntax:  proxy_store on | off | string;
Default: proxy_store off;
Context: http, server, location

디스크에 파일 저장을 활성화합니다. on 매개변수는 명령 별칭 또는 루트에 해당하는 경로로 파일을 저장합니다. off 매개변수는 파일 저장을 비활성화합니다. 또한, 파일 이름이 변수를 포함하는 문자열을 사용하여 명시적으로 설정될 수 있습니다.

proxy_store /data/www$original_uri;

파일의 수정 시간은 수신된 “Last-Modified” 응답 헤더 필드에 따라 설정됩니다. 응답이 먼저 임시 파일에 기록된 다음 파일 이름이 변경됩니다. 버전 0.8.9부터 임시 파일과 영구 저장소를 다른 파일 시스템에 넣을 수 있습니다. 하지만 이 경우 비용이 적게 드는 이름 변경 작업 대신 2개의 파일 시스템 전체에서 파일이 복사됩니다. 따라서 주어진 위치에서 proxy_temp_path 명령으로 설정되는 저장된 파일과 임시 파일 포함 디렉터리 모두 동일한 파일 시스템에 배치하는 것이 좋습니다.

이 명령은 정적 변경 불가 파일의 로컬 복사본을 생성하는 데 사용됩니다. 예를 들어, 다음과 같습니다.

location /images/ {
    root               /data/www;
    error_page         404 = /fetch$uri;
}

location /fetch/ {
    internal;

    proxy_pass         http://backend/;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    alias              /data/www/;
}

또는 다음과 같습니다.

location /images/ {
    root               /data/www;
    error_page         404 = @fetch;
}

location @fetch {
    internal;

    proxy_pass         http://backend;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    root               /data/www;
}
Syntax:  proxy_store_access users:permissions ...;
Default: proxy_store_access user:rw;
Context: http, server, location

새로 생성된 파일 및 디렉터리에 대한 액세스 권한을 설정합니다. 예를 들어, 다음과 같습니다.

proxy_store_access user:rw group:rw all:r;

모든 그룹 또는 모든 액세스 권한이 지정되면 사용자 권한이 생략될 수 있습니다.

proxy_store_access group:rw all:r;
Syntax:  proxy_temp_file_write_size size;
Default: proxy_temp_file_write_size 8k|16k;
Context: http, server, location

프록시 설정된 서버에서 임시 파일로의 응답 버퍼링이 활성화된 경우 임시 파일에 한 번에 기록되는 데이터의 크기를 제한합니다. 기본적으로 크기proxy_buffer_sizeproxy_buffers 명령으로 설정되는 2개 버퍼로 제한됩니다. 임시 파일의 최대 크기는 proxy_max_temp_file_size 명령으로 설정됩니다.

Syntax:  proxy_temp_path path [level1 [level2 [level3]]];
Default: proxy_temp_path proxy_temp;
Context: http, server, location

프록시 설정된 서버에서 수신된 데이터와 함께 임시 파일을 저장하는 디렉터리를 정의합니다. 지정된 디렉터리 아래 최대 3개 수준의 하위 디렉터리 계층 구조를 사용할 수 있습니다. 예를 들어, 다음 구성에서

proxy_temp_path /spool/nginx/proxy_temp 1 2;

임시 파일은 다음과 같을 수 있습니다.

/spool/nginx/proxy_temp/7/45/00000123457

proxy_cache_path 명령의 use_temp_path 매개변수도 참조하세요.

임베디드 변수

ngx_http_proxy_module 모듈은 proxy_set_header 명령을 사용하여 헤더를 구성하는 데 사용할 수 있는 포함된 변수를 지원합니다.

$proxy_host

proxy_pass 명령에 지정된 프록시 설정된 서버의 이름 및 포트

$proxy_port

proxy_pass 명령 또는 프로토콜의 기본 포트에 지정된 프록시 설정된 서버의 포트

$proxy_add_x_forwarded_for

$remote_addr 변수가 추가되고 쉼표로 구분된 “X-Forwarded-For” 클라이언트 요청 헤더 필드 “X-Forwarded-For” 필드가 클라이언트 요청 헤더에 없는 경우 $proxy_add_x_forwarded_for 변수는 $remote_addr 변수와 동일합니다.

Comments are closed.