ngx_http_uwsgi_module

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

예제 구성

location / {
    include    uwsgi_params;
    uwsgi_pass localhost:9000;
}

Directives

Syntax:  uwsgi_bind address [transparent] | off;
Default: —
Context: http, server, location

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

transparent 매개변수(1.11.0)를 통해 uwsgi 서버로 나가는 연결은 비로컬 IP 주소, 예를 들어 클라이언트의 실제 IP 주소에서 시작되도록 합니다.

uwsgi_bind $remote_addr transparent;

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

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

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

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

uwsgi 서버에서 응답의 버퍼링을 활성화하거나 비활성화합니다.

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

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

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

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

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

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

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

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

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

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

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

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

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

uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
uwsgi_cache_bypass $http_pragma    $http_authorization;

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

Syntax:  uwsgi_cache_key string;
Default: —
Context: http, server, location

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

uwsgi_cache_key localhost:9000$request_uri;
Syntax:  uwsgi_cache_lock on | off;
Default: uwsgi_cache_lock off;
Context: http, server, location
This directive appeared in version 1.1.12.

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

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

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

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

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

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

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

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

Syntax:  uwsgi_cache_methods GET | HEAD | POST ...;
Default: uwsgi_cache_methods GET HEAD;
Context: http, server, location

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

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

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

Syntax:  uwsgi_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를 수락합니다. 예를 들어, 다음 구성에서

uwsgi_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으로 설정되면 주어진 위치에서 uwsgi_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:  uwsgi_cache_purge string ...;
Default: —
Context: http, server, location
This directive appeared in version 1.5.7.

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

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

예제 구성:

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

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

server {
    ...
    location / {
        uwsgi_pass        backend;
        uwsgi_cache       cache_zone;
        uwsgi_cache_key   $uri;
        uwsgi_cache_purge $purge_method;
    }
}

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

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

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

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

uwsgi 서버와 통신하는 동안 오류가 발생할 때 오래된 캐시된 응답을 사용할 수 있는 경우를 결정합니다. 명령의 매개변수는 uwsgi_next_upstream 명령의 매개변수와 일치합니다.

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

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

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

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

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

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

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

uwsgi_cache_valid 200 302 10m;
uwsgi_cache_valid 404      1m;

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

캐싱 시간만 지정된 경우

uwsgi_cache_valid 5m;

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

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

uwsgi_cache_valid 200 302 10m;
uwsgi_cache_valid 301      1h;
uwsgi_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).

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

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

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

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

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

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

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

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

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

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

uwsgi 서버의 특정한 응답 헤더 필드 처리를 비활성화합니다. 다음 필드는 무시할 수 있습니다. “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:  uwsgi_intercept_errors on | off;
Default: uwsgi_intercept_errors off;
Context: http, server, location

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

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

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

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

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

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

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

Syntax:  uwsgi_modifier1 number;
Default: uwsgi_modifier1 0;
Context: http, server, location

uwsgi packet header에서 modifier1 필드의 값을 설정합니다.

Syntax:  uwsgi_modifier2 number;
Default: uwsgi_modifier2 0;
Context: http, server, location

uwsgi packet header에서 modifier2 필드의 값을 설정합니다.

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

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

error

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

timeout

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

invalid_header

서버가 비어 있거나 잘못된 응답을 반환했습니다.

http_500

서버가 코드 500으로 응답을 반환했습니다.

http_503

서버가 코드 503으로 응답을 반환했습니다.

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_503 및 http_429의 경우는 명령에 지정된 경우에만 실패한 시도로 간주됩니다. http_403 및 http_404의 경우는 절대 실패한 시도로 간주되지 않습니다.

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

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

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

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

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

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

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

uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
uwsgi_no_cache $http_pragma    $http_authorization;

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

Syntax:  uwsgi_param parameter value [if_not_empty];
Default: —
Context: http, server, location

uwsgi 서버로 전달해야 하는 매개변수를 설정합니다. 은 텍스트, 변수 및 그 조합을 포함할 수 있습니다. 이러한 명령은 현재 수준에서 정의된 uwsgi_param 명령이 없는 경우에만 이전 구성 수준에서 상속됩니다.

표준 CGI 환경 변수는 uwsgi 헤더로 제공되어야 합니다. 배포판에 제공된 uwsgi_params 파일을 참조하세요.

location / {
    include uwsgi_params;
    ...
}

명령이 if_not_empty(1.1.11)로 지정된 경우 그러한 매개변수는 해당 값이 비어 있지 않은 경우에만 서버로 전달됩니다.

uwsgi_param HTTPS $https if_not_empty;
Syntax:  uwsgi_pass [protocol://]address;
Default: —
Context: location, if in location

uwsgi 서버의 프로토콜 및 주소를 설정합니다. 프로토콜로 “uwsgi” 또는 “suwsgi”(보안 uwsgi, uwsgi over SSL)를 지정할 수 있습니다. 주소는 도메인 이름 또는 IP 주소 및 포트로 지정하거나

uwsgi_pass localhost:9000;
uwsgi_pass uwsgi://localhost:9000;
uwsgi_pass suwsgi://[2001:db8::1]:9090;

또는 UNIX-도메인 소켓 경로로 지정할 수 있습니다.

uwsgi_pass unix:/tmp/uwsgi.socket;

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

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

보안 uwsgi 프로토콜은 버전 1.5.8 이후 지원됩니다.

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

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

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

원래 요청 본문이 uwsgi 서버로 전달되는지를 나타냅니다. uwsgi_pass_request_headers 명령도 참조하세요.

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

원래 요청의 헤더 필드가 uwsgi 서버로 전달되는지 나타냅니다. uwsgi_pass_request_body 명령도 참조하세요.

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

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

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

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

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

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

HTTP/1.1 청크 분할 전송 인코딩이 원래 요청 본문을 전송하는 데 사용되면 요청 본문은 명령 값과 관계없이 버퍼링됩니다.

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

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

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

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

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

보안 uwsgi 서버에 대한 인증에 사용된 PEM 형식의 인증서로 파일을 지정합니다.

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

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

보안 uwsgi 서버에 대한 인증에 사용된 PEM 형식의 비밀 키로 파일을 지정합니다.

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

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

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

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

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

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

보안 uwsgi 서버와의 연결을 설정할 때 임의의 OpenSSL 구성 명령을 설정합니다.

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

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

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

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

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

Syntax:  uwsgi_ssl_name name;
Default: uwsgi_ssl_name host from uwsgi_pass;
Context: http, server, location
This directive appeared in version 1.7.0.

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

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

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

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

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

보안 uwsgi 서버에 대한 요청의 지정된 프로토콜을 활성화합니다.

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

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

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

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

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

보안 uwsgi 서버의 인증서를 확인하는 데 사용되는 PEM 형식으로 신뢰할 수 있는 CA 인증서를 사용하여 파일을 지정합니다.

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

보안 uwsgi 서버 인증서의 확인을 활성화하거나 비활성화합니다.

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

보안 uwsgi 서버 인증서 체인의 확인 깊이를 설정합니다.

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

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

uwsgi_store /data/www$original_uri;

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

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

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

location /fetch/ {
    internal;

    uwsgi_pass         backend:9000;
    ...

    uwsgi_store        on;
    uwsgi_store_access user:rw group:rw all:r;
    uwsgi_temp_path    /data/temp;

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

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

uwsgi_store_access user:rw group:rw all:r;

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

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

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

Syntax:  uwsgi_temp_path path [level1 [level2 [level3]]];
Default: uwsgi_temp_path uwsgi_temp;
Context: http, server, location

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

uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;

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

/spool/nginx/uwsgi_temp/7/45/00000123457

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