模組 ngx_http_uwsgi_module

設定範例
指令
     uwsgi_bind
     uwsgi_buffer_size
     uwsgi_buffering
     uwsgi_buffers
     uwsgi_busy_buffers_size
     uwsgi_cache
     uwsgi_cache_background_update
     uwsgi_cache_bypass
     uwsgi_cache_key
     uwsgi_cache_lock
     uwsgi_cache_lock_age
     uwsgi_cache_lock_timeout
     uwsgi_cache_max_range_offset
     uwsgi_cache_methods
     uwsgi_cache_min_uses
     uwsgi_cache_path
     uwsgi_cache_purge
     uwsgi_cache_revalidate
     uwsgi_cache_use_stale
     uwsgi_cache_valid
     uwsgi_connect_timeout
     uwsgi_force_ranges
     uwsgi_hide_header
     uwsgi_ignore_client_abort
     uwsgi_ignore_headers
     uwsgi_intercept_errors
     uwsgi_limit_rate
     uwsgi_max_temp_file_size
     uwsgi_modifier1
     uwsgi_modifier2
     uwsgi_next_upstream
     uwsgi_next_upstream_timeout
     uwsgi_next_upstream_tries
     uwsgi_no_cache
     uwsgi_param
     uwsgi_pass
     uwsgi_pass_header
     uwsgi_pass_request_body
     uwsgi_pass_request_headers
     uwsgi_read_timeout
     uwsgi_request_buffering
     uwsgi_send_timeout
     uwsgi_socket_keepalive
     uwsgi_ssl_certificate
     uwsgi_ssl_certificate_key
     uwsgi_ssl_ciphers
     uwsgi_ssl_conf_command
     uwsgi_ssl_crl
     uwsgi_ssl_key_log
     uwsgi_ssl_name
     uwsgi_ssl_password_file
     uwsgi_ssl_protocols
     uwsgi_ssl_server_name
     uwsgi_ssl_session_reuse
     uwsgi_ssl_trusted_certificate
     uwsgi_ssl_verify
     uwsgi_ssl_verify_depth
     uwsgi_store
     uwsgi_store_access
     uwsgi_temp_file_write_size
     uwsgi_temp_path

ngx_http_uwsgi_module 模組允許將請求傳遞到 uwsgi 伺服器。

設定範例

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

指令

語法 uwsgi_bind address [transparent] | off;
預設值
上下文 httpserverlocation

使與 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 上,則不需要 (1.13.8),因為如果指定了 transparent 參數,工作程序會從主程序繼承 CAP_NET_RAW 功能。也必須設定核心路由表,以攔截來自 uwsgi 伺服器的網路流量。

語法 uwsgi_buffer_size size;
預設值
uwsgi_buffer_size 4k|8k;
上下文 httpserverlocation

設定用於讀取從 uwsgi 伺服器收到的回應的第一部分之緩衝區的 size。這部分通常包含小型回應標頭。預設情況下,緩衝區大小等於一個記憶體頁面。這取決於平台,為 4K 或 8K。可以將其調小。

語法 uwsgi_buffering on | off;
預設值
uwsgi_buffering on;
上下文 httpserverlocation

啟用或停用來自 uwsgi 伺服器的回應的緩衝處理。

啟用緩衝處理時,nginx 會盡快從 uwsgi 伺服器接收回應,並將其儲存到 uwsgi_buffer_sizeuwsgi_buffers 指令設定的緩衝區中。如果整個回應不適合記憶體,則可以將其一部分儲存到磁碟上的暫存檔案中。寫入暫存檔案由 uwsgi_max_temp_file_sizeuwsgi_temp_file_write_size 指令控制。

停用緩衝處理時,回應會與接收到回應時同步傳遞給用戶端。nginx 不會嘗試從 uwsgi 伺服器讀取整個回應。nginx 一次可以從伺服器接收的最大資料量由 uwsgi_buffer_size 指令設定。

也可以藉由在「X-Accel-Buffering」回應標頭欄位中傳遞「yes」或「no」來啟用或停用緩衝處理。可以使用 uwsgi_ignore_headers 指令停用此功能。

語法 uwsgi_buffers number size;
預設值
uwsgi_buffers 8 4k|8k;
上下文 httpserverlocation

設定用於讀取來自 uwsgi 伺服器的回應的緩衝區的 numbersize,用於單一連線。預設情況下,緩衝區大小等於一個記憶體頁面。這取決於平台,為 4K 或 8K。

語法 uwsgi_busy_buffers_size size;
預設值
uwsgi_busy_buffers_size 8k|16k;
上下文 httpserverlocation

當啟用來自 uwsgi 伺服器的回應的 緩衝處理時,會限制在回應尚未完全讀取時,可以用於將回應傳送至用戶端的緩衝區的總 size。同時,其餘的緩衝區可用於讀取回應,並且在需要時,將回應的一部分緩衝到暫存檔案中。預設情況下,size 受限於 uwsgi_buffer_sizeuwsgi_buffers 指令設定的兩個緩衝區的大小。

語法 uwsgi_cache zone | off;
預設值
uwsgi_cache off;
上下文 httpserverlocation

定義用於快取的共用記憶體區域。相同的區域可以在多個地方使用。參數值可以包含變數 (1.7.9)。off 參數會停用從先前設定層級繼承的快取。

語法 uwsgi_cache_background_update on | off;
預設值
uwsgi_cache_background_update off;
上下文 httpserverlocation

此指令出現在 1.11.10 版中。

允許啟動背景子請求以更新過期的快取項目,同時將過時的快取回應傳回給用戶端。請注意,在更新過時快取回應時,必須允許使用過時快取回應。

語法 uwsgi_cache_bypass string ...;
預設值
上下文 httpserverlocation

定義在哪些條件下不會從快取中取得回應。如果字串參數的至少一個值不為空且不等於「0」,則不會從快取中取得回應

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

可以與 uwsgi_no_cache 指令一起使用。

語法 uwsgi_cache_key string;
預設值
上下文 httpserverlocation

定義快取的索引鍵,例如

uwsgi_cache_key localhost:9000$request_uri;

語法 uwsgi_cache_lock on | off;
預設值
uwsgi_cache_lock off;
上下文 httpserverlocation

此指令出現在 1.1.12 版中。

啟用時,一次只允許一個請求透過將請求傳遞至 uwsgi 伺服器,來填入根據 uwsgi_cache_key 指令所識別的新快取元素。同一快取元素的其他請求將會等待回應出現在快取中,或等到此元素的快取鎖定被釋放,最多等待 uwsgi_cache_lock_timeout 指令所設定的時間。

語法 uwsgi_cache_lock_age time;
預設值
uwsgi_cache_lock_age 5s;
上下文 httpserverlocation

此指令出現在 1.7.8 版中。

如果傳遞到 uwsgi 伺服器以填入新快取元素的上一個請求在指定的 time 內尚未完成,則可能會將另一個請求傳遞至 uwsgi 伺服器。

語法 uwsgi_cache_lock_timeout time;
預設值
uwsgi_cache_lock_timeout 5s;
上下文 httpserverlocation

此指令出現在 1.1.12 版中。

設定 uwsgi_cache_lock 的逾時。當 time 到期時,請求將會傳遞至 uwsgi 伺服器,但是回應不會被快取。

在 1.7.8 之前的版本中,回應可以被快取。

語法 uwsgi_cache_max_range_offset number;
預設值
上下文 httpserverlocation

此指令出現在 1.11.6 版中。

設定位元組範圍請求的位元組偏移量。如果範圍超出偏移量,則範圍請求會傳遞至 uwsgi 伺服器,且回應不會被快取。

語法 uwsgi_cache_methods GET | HEAD | POST ...;
預設值
uwsgi_cache_methods GET HEAD;
上下文 httpserverlocation

如果用戶端請求方法在此指令中列出,則回應將被快取。「GET」和「HEAD」方法始終會新增至清單中,但建議明確指定它們。另請參閱 uwsgi_no_cache 指令。

語法 uwsgi_cache_min_uses number;
預設值
uwsgi_cache_min_uses 1;
上下文 httpserverlocation

設定回應將被快取之前要求的 number

語法 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];
預設值
上下文 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 版開始,暫存檔案和快取可以放在不同的檔案系統上。但是,請注意,在這種情況下,檔案會複製跨越兩個檔案系統,而不是廉價的重新命名作業。因此,建議將任何給定位置的快取和用於保存暫存檔案的目錄都放在相同的檔案系統上。暫存檔案的目錄是根據 use_temp_path 參數設定 (1.7.10)。如果省略此參數或將其值設定為 on,則將使用 uwsgi_temp_path 指令為給定位置設定的目錄。如果值設定為 off,則暫存檔案將直接放在快取目錄中。

此外,所有作用中的索引鍵和有關資料的資訊都儲存在共用記憶體區域中,其 namesizekeys_zone 參數設定。一個 megabyte 區域可以儲存大約 8 千個索引鍵。

作為商業訂閱的一部分,共用記憶體區域也儲存擴充的快取資訊,因此,需要為相同數量的索引鍵指定更大的區域大小。例如,一個 megabyte 區域可以儲存大約 4 千個索引鍵。

inactive 參數指定的時間內未存取的快取資料將會從快取中移除,而與其新鮮度無關。預設情況下,inactive 設定為 10 分鐘。

特殊的「快取管理器」程序會監控 max_size 參數設定的最大快取大小,以及快取檔案系統上 min_free (1.19.1) 參數設定的最小可用空間量。當大小超過限制或可用空間不足時,它會移除最近最少使用的資料。資料的移除會根據 manager_filesmanager_thresholdmanager_sleep 參數 (1.11.5) 設定的迭代次數進行。在一次迭代中,刪除的項目不會超過 manager_files 個(預設為 100 個)。一次迭代的持續時間受限於 manager_threshold 參數(預設為 200 毫秒)。在迭代之間,會暫停一段時間,該時間由 manager_sleep 參數設定(預設為 50 毫秒)。

啟動一分鐘後,特殊的「快取載入器」程序會被啟用。它會將先前快取的資料(儲存在檔案系統上)的相關資訊載入到快取區域。載入也是以迭代方式進行。在一次迭代中,載入的項目不會超過 loader_files 個(預設為 100 個)。此外,一次迭代的持續時間受限於 loader_threshold 參數(預設為 200 毫秒)。在迭代之間,會暫停一段時間,該時間由 loader_sleep 參數設定(預設為 50 毫秒)。

此外,以下參數可作為我們的 商業訂閱 的一部分提供

purger=on|off
指示是否要由快取清除器從磁碟移除符合萬用字元鍵的快取條目 (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 版本後,先前快取的響應將被視為無效。

語法 uwsgi_cache_purge string ...;
預設值
上下文 httpserverlocation

此指令出現在 1.5.7 版本中。

定義將請求視為快取清除請求的條件。如果字串參數的至少一個值不為空且不等於「0」,則會移除具有相應 快取鍵 的快取條目。成功操作的結果會以返回 204 (No Content) 響應來表示。

如果清除請求的 快取鍵 以星號 ("*") 結尾,則將會從快取中移除所有符合萬用字元鍵的快取條目。但是,這些條目將保留在磁碟上,直到它們因非活動而刪除、或由 快取清除器 (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;
    }
}

此功能可作為我們的 商業訂閱 的一部分提供。

語法 uwsgi_cache_revalidate on | off;
預設值
uwsgi_cache_revalidate off;
上下文 httpserverlocation

此指令出現在 1.5.7 版本中。

啟用使用帶有「If-Modified-Since」和「If-None-Match」標頭欄位的條件請求重新驗證過期的快取項目。

語法 uwsgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | http_429 | off ...;
預設值
uwsgi_cache_use_stale off;
上下文 httpserverlocation

決定在與 uwsgi 伺服器通訊期間發生錯誤時,在哪些情況下可以使用過期的快取響應。該指令的參數與 uwsgi_next_upstream 指令的參數相符。

如果無法選擇 uwsgi 伺服器來處理請求,error 參數也允許使用過期的快取響應。

此外,如果目前正在更新過期的快取響應,updating 參數允許使用過期的快取響應。這允許在更新快取資料時,盡可能減少對 uwsgi 伺服器的存取次數。

在響應過期後,也可以直接在響應標頭中啟用在指定秒數內使用過期的快取響應 (1.11.10)。這比使用指令參數的優先順序較低。

為了盡可能減少在填入新的快取元素時對 uwsgi 伺服器的存取次數,可以使用 uwsgi_cache_lock 指令。

語法 uwsgi_cache_valid [code ...] time;
預設值
上下文 httpserverlocation

為不同的響應代碼設定快取時間。例如,以下指令

uwsgi_cache_valid 200 302 10m;
uwsgi_cache_valid 404      1m;

設定代碼為 200 和 302 的響應快取 10 分鐘,代碼為 404 的響應快取 1 分鐘。

如果僅指定快取 time

uwsgi_cache_valid 5m;

則僅快取 200、301 和 302 響應。

此外,可以指定 any 參數來快取任何響應

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

快取參數也可以直接在響應標頭中設定。這比使用指令設定快取時間的優先順序較高。

可以使用 uwsgi_ignore_headers 指令停用對這些響應標頭欄位中的一個或多個進行處理。

語法 uwsgi_connect_timeout time;
預設值
uwsgi_connect_timeout 60s;
上下文 httpserverlocation

定義與 uwsgi 伺服器建立連線的逾時時間。應注意的是,此逾時時間通常不能超過 75 秒。

語法 uwsgi_force_ranges on | off;
預設值
uwsgi_force_ranges off;
上下文 httpserverlocation

此指令出現在 1.7.7 版本中。

無論這些響應中的「Accept-Ranges」欄位如何,都啟用對來自 uwsgi 伺服器的快取和未快取響應的位元組範圍支援。

語法 uwsgi_hide_header field;
預設值
上下文 httpserverlocation

預設情況下,nginx 不會將 uwsgi 伺服器響應中的「Status」和「X-Accel-...」標頭欄位傳遞給用戶端。uwsgi_hide_header 指令會設定其他不會被傳遞的欄位。相反地,如果需要允許傳遞欄位,則可以使用 uwsgi_pass_header 指令。

語法 uwsgi_ignore_client_abort on | off;
預設值
uwsgi_ignore_client_abort off;
上下文 httpserverlocation

決定當用戶端在未等待響應的情況下關閉連線時,是否應該關閉與 uwsgi 伺服器的連線。

語法 uwsgi_ignore_headers field ...;
預設值
上下文 httpserverlocation

停用對來自 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)。

如果不停用,則對這些標頭欄位的處理具有以下影響

語法 uwsgi_intercept_errors on | off;
預設值
uwsgi_intercept_errors off;
上下文 httpserverlocation

決定是否應將代碼大於或等於 300 的 uwsgi 伺服器響應傳遞給用戶端,還是將其攔截並重新導向至 nginx 以使用 error_page 指令進行處理。

語法 uwsgi_limit_rate rate;
預設值
uwsgi_limit_rate 0;
上下文 httpserverlocation

此指令出現在 1.7.7 版本中。

限制從 uwsgi 伺服器讀取響應的速度。rate 以每秒位元組數指定。零值會停用速率限制。該限制是按每個請求設定的,因此,如果 nginx 同時開啟兩個與 uwsgi 伺服器的連線,則整體速率將是指定限制的兩倍。只有在啟用來自 uwsgi 伺服器的響應緩衝時,限制才會生效。參數值可以包含變數 (1.27.0)。

語法 uwsgi_max_temp_file_size size;
預設值
uwsgi_max_temp_file_size 1024m;
上下文 httpserverlocation

當啟用來自 uwsgi 伺服器的響應緩衝,並且整個響應不符合 uwsgi_buffer_sizeuwsgi_buffers 指令設定的緩衝區時,可以將部分響應儲存到臨時檔案。此指令會設定臨時檔案的最大 size。一次寫入臨時檔案的資料大小由 uwsgi_temp_file_write_size 指令設定。

零值會停用將響應緩衝到臨時檔案。

此限制不適用於將快取儲存在磁碟上的響應。

語法 uwsgi_modifier1 number;
預設值
uwsgi_modifier1 0;
上下文 httpserverlocation

設定 uwsgi 資料包標頭modifier1 欄位的值。

語法 uwsgi_modifier2 number;
預設值
uwsgi_modifier2 0;
上下文 httpserverlocation

設定 uwsgi 資料包標頭modifier2 欄位的值。

語法 uwsgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off ...;
預設值
uwsgi_next_upstream error timeout;
上下文 httpserverlocation

指定在哪些情況下應將請求傳遞到下一個伺服器

error
與伺服器建立連線、向其傳遞請求或讀取響應標頭時發生錯誤;
timeout
與伺服器建立連線、向其傳遞請求或讀取響應標頭時發生逾時;
invalid_header
伺服器傳回空或無效的響應;
http_500
伺服器傳回代碼為 500 的響應;
http_503
伺服器傳回代碼為 503 的響應;
http_403
伺服器傳回代碼為 403 的響應;
http_404
伺服器傳回代碼為 404 的響應;
http_429
伺服器傳回代碼為 429 的響應 (1.11.13);
non_idempotent
通常,如果已將請求傳送到上游伺服器,則具有非冪等方法 (POSTLOCKPATCH) 的請求不會傳遞到下一個伺服器 (1.9.13);明確啟用此選項允許重試此類請求;
off
停用將請求傳遞到下一個伺服器。

務必記住,只有在尚未將任何內容傳送給用戶端時,才有可能將請求傳遞到下一個伺服器。也就是說,如果在傳輸回應的過程中發生錯誤或逾時,則無法修正此問題。

該指令還定義了與伺服器通訊的哪些情況被視為不成功的嘗試errortimeoutinvalid_header 的情況始終被視為不成功的嘗試,即使它們未在指令中指定。只有在指令中指定了 http_500http_503http_429 的情況下,才會被視為不成功的嘗試。http_403http_404 的情況永遠不會被視為不成功的嘗試。

將請求傳遞到下一個伺服器可以通過嘗試次數時間來限制。

語法 uwsgi_next_upstream_timeout time;
預設值
uwsgi_next_upstream_timeout 0;
上下文 httpserverlocation

此指令出現在 1.7.5 版本中。

限制將請求傳遞到下一個伺服器的時間。值為 0 時會關閉此限制。

語法 uwsgi_next_upstream_tries number;
預設值
uwsgi_next_upstream_tries 0;
上下文 httpserverlocation

此指令出現在 1.7.5 版本中。

限制將請求傳遞到下一個伺服器的可能嘗試次數。值為 0 時會關閉此限制。

語法 uwsgi_no_cache string ...;
預設值
上下文 httpserverlocation

定義在哪些條件下回應將不會被儲存到快取中。如果字串參數中至少有一個值不為空且不等於 “0”,則回應將不會被儲存。

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

可以與 uwsgi_cache_bypass 指令一起使用。

語法 uwsgi_param parameter value [if_not_empty];
預設值
上下文 httpserverlocation

設定應該傳遞給 uwsgi 伺服器的 parametervalue 可以包含文字、變數及其組合。只有當目前層級沒有定義任何 uwsgi_param 指令時,這些指令才會從先前的設定層級繼承。

標準的 CGI 環境變數應該以 uwsgi 標頭的形式提供,請參閱發行版本中提供的 uwsgi_params 檔案。

location / {
    include uwsgi_params;
    ...
}

如果指令指定了 if_not_empty (1.1.11),則只有當其值不為空時,才會將此參數傳遞給伺服器。

uwsgi_param HTTPS $https if_not_empty;

語法 uwsgi_pass [protocol://]address;
預設值
上下文 location, if in location

設定 uwsgi 伺服器的協定和位址。protocol 可以指定為 “uwsgi” 或 “suwsgi”(安全的 uwsgi,透過 SSL 的 uwsgi)。位址可以指定為網域名稱或 IP 位址,以及連接埠

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

或作為 UNIX 網域通訊端路徑

uwsgi_pass unix:/tmp/uwsgi.socket;

如果網域名稱解析為多個位址,則所有位址將以循環方式使用。此外,位址可以指定為伺服器群組

參數值可以包含變數。在這種情況下,如果位址指定為網域名稱,則會在描述的 伺服器群組中搜尋該名稱,如果找不到,則使用 解析器來確定。

自 1.5.8 版本起支援安全的 uwsgi 協定。

語法 uwsgi_pass_header field;
預設值
上下文 httpserverlocation

允許將否則將停用的標頭欄位從 uwsgi 伺服器傳遞到用戶端。

語法 uwsgi_pass_request_body on | off;
預設值
uwsgi_pass_request_body on;
上下文 httpserverlocation

指示是否將原始請求主體傳遞給 uwsgi 伺服器。另請參閱 uwsgi_pass_request_headers 指令。

語法 uwsgi_pass_request_headers on | off;
預設值
uwsgi_pass_request_headers on;
上下文 httpserverlocation

指示是否將原始請求的標頭欄位傳遞給 uwsgi 伺服器。另請參閱 uwsgi_pass_request_body 指令。

語法 uwsgi_read_timeout time;
預設值
uwsgi_read_timeout 60s;
上下文 httpserverlocation

定義從 uwsgi 伺服器讀取回應的逾時時間。逾時時間僅設定在兩個連續的讀取操作之間,而不是針對整個回應的傳輸。如果 uwsgi 伺服器在此時間內未傳輸任何內容,則會關閉連線。

語法 uwsgi_request_buffering on | off;
預設值
uwsgi_request_buffering on;
上下文 httpserverlocation

此指令出現在 1.7.11 版本中。

啟用或停用用戶端請求主體的緩衝。

啟用緩衝時,會在將請求傳送到 uwsgi 伺服器之前,從用戶端讀取整個請求主體。

停用緩衝時,請求主體會在其接收到後立即傳送到 uwsgi 伺服器。在這種情況下,如果 nginx 已經開始傳送請求主體,則請求無法傳遞到下一個伺服器

當使用 HTTP/1.1 分塊傳輸編碼傳送原始請求主體時,無論指令值為何,都會緩衝請求主體。

語法 uwsgi_send_timeout time;
預設值
uwsgi_send_timeout 60s;
上下文 httpserverlocation

設定將請求傳輸到 uwsgi 伺服器的逾時時間。逾時時間僅設定在兩個連續的寫入操作之間,而不是針對整個請求的傳輸。如果 uwsgi 伺服器在此時間內未接收到任何內容,則會關閉連線。

語法 uwsgi_socket_keepalive on | off;
預設值
uwsgi_socket_keepalive off;
上下文 httpserverlocation

此指令出現在 1.15.6 版本中。

設定與 uwsgi 伺服器的輸出連線的 “TCP keepalive” 行為。預設情況下,作業系統的設定對通訊端有效。如果指令設定為值 “on”,則會為通訊端啟用 SO_KEEPALIVE 通訊端選項。

語法 uwsgi_ssl_certificate file;
預設值
上下文 httpserverlocation

此指令出現在 1.7.8 版中。

指定一個 file,其中包含用於驗證安全 uwsgi 伺服器的 PEM 格式憑證。

自 1.21.0 版本起,可以在 file 名稱中使用變數。

語法 uwsgi_ssl_certificate_key file;
預設值
上下文 httpserverlocation

此指令出現在 1.7.8 版中。

指定一個 file,其中包含用於驗證安全 uwsgi 伺服器的 PEM 格式秘密金鑰。

可以指定值 engine:name:id 來代替 file (1.7.9),它會從 OpenSSL 引擎 name 載入具有指定 id 的秘密金鑰。

自 1.21.0 版本起,可以在 file 名稱中使用變數。

語法 uwsgi_ssl_ciphers ciphers;
預設值
uwsgi_ssl_ciphers DEFAULT;
上下文 httpserverlocation

此指令出現在 1.5.8 版本中。

指定對安全 uwsgi 伺服器的請求啟用的密碼。密碼以 OpenSSL 程式庫理解的格式指定。

可以使用 “openssl ciphers” 命令檢視完整清單。

語法 uwsgi_ssl_conf_command name value;
預設值
上下文 httpserverlocation

此指令出現在 1.19.4 版本中。

設定與安全 uwsgi 伺服器建立連線時的任意 OpenSSL 設定命令

當使用 OpenSSL 1.0.2 或更高版本時支援此指令。

可以在同一層級指定多個 uwsgi_ssl_conf_command 指令。只有當目前層級沒有定義任何 uwsgi_ssl_conf_command 指令時,這些指令才會從先前的設定層級繼承。

請注意,直接設定 OpenSSL 可能會導致非預期的行為。

語法 uwsgi_ssl_crl file;
預設值
上下文 httpserverlocation

此指令出現在 1.7.0 版本中。

指定一個 file,其中包含用於驗證安全 uwsgi 伺服器憑證的 PEM 格式的已撤銷憑證 (CRL)。

語法 uwsgi_ssl_key_log path;
預設值
上下文 httpserverlocation

此指令出現在 1.27.2 版本中。

啟用安全 uwsgi 伺服器連線 SSL 金鑰的記錄,並指定金鑰記錄檔的路徑。金鑰以與 Wireshark 相容的 SSLKEYLOGFILE 格式記錄。

此指令可作為我們的 商業訂閱的一部分提供。

語法 uwsgi_ssl_name name;
預設值
uwsgi_ssl_name host from uwsgi_pass;
上下文 httpserverlocation

此指令出現在 1.7.0 版本中。

允許覆寫用於驗證安全 uwsgi 伺服器憑證的伺服器名稱,並在與安全 uwsgi 伺服器建立連線時通過 SNI 傳遞

預設情況下,使用 uwsgi_pass 中的主機部分。

語法 uwsgi_ssl_password_file file;
預設值
上下文 httpserverlocation

此指令出現在 1.7.8 版中。

指定一個 file,其中包含用於秘密金鑰的密碼短語,其中每個密碼短語都指定在單獨的行上。載入金鑰時,會依次嘗試密碼短語。

語法 uwsgi_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
預設值
uwsgi_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
上下文 httpserverlocation

此指令出現在 1.5.8 版本中。

為對安全 uwsgi 伺服器的請求啟用指定的協定。

自 1.23.4 版本起,預設使用 TLSv1.3 參數。

語法 uwsgi_ssl_server_name on | off;
預設值
uwsgi_ssl_server_name off;
上下文 httpserverlocation

此指令出現在 1.7.0 版本中。

啟用或停用在與安全 uwsgi 伺服器建立連線時,通過 TLS 伺服器名稱指示擴展 (SNI, RFC 6066) 傳遞伺服器名稱。

語法 uwsgi_ssl_session_reuse on | off;
預設值
uwsgi_ssl_session_reuse on;
上下文 httpserverlocation

此指令出現在 1.5.8 版本中。

決定在使用安全 uwsgi 伺服器時是否可以重複使用 SSL 工作階段。如果記錄中出現錯誤 “SSL3_GET_FINISHED:digest check failed”,請嘗試停用工作階段重複使用。

語法 uwsgi_ssl_trusted_certificate file;
預設值
上下文 httpserverlocation

此指令出現在 1.7.0 版本中。

指定一個 file,其中包含用於驗證安全 uwsgi 伺服器憑證的 PEM 格式的信任 CA 憑證。

語法 uwsgi_ssl_verify on | off;
預設值
uwsgi_ssl_verify off;
上下文 httpserverlocation

此指令出現在 1.7.0 版本中。

啟用或停用安全 uwsgi 伺服器憑證的驗證。

語法 uwsgi_ssl_verify_depth number;
預設值
uwsgi_ssl_verify_depth 1;
上下文 httpserverlocation

此指令出現在 1.7.0 版本中。

設定安全 uwsgi 伺服器憑證鏈中的驗證深度。

語法 uwsgi_store on | off | string;
預設值
uwsgi_store off;
上下文 httpserverlocation

啟用將檔案儲存到磁碟。on 參數會使用與 aliasroot 指令相對應的路徑來儲存檔案。off 參數會停用檔案儲存。此外,可以使用包含變數的 string 明確設定檔案名稱

uwsgi_store /data/www$original_uri;

檔案的修改時間會根據接收到的 “Last-Modified” 回應標頭欄位設定。回應會先寫入暫存檔,然後再重新命名檔案。從 0.8.9 版本開始,暫存檔和持久儲存可以放置在不同的檔案系統上。但是,請注意,在這種情況下,檔案會跨兩個檔案系統複製,而不是執行便宜的重新命名操作。因此,建議對於任何給定的位置,儲存的檔案和由 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/;
}

語法 uwsgi_store_access users:permissions ...;
預設值
uwsgi_store_access user:rw;
上下文 httpserverlocation

設定新建立的檔案和目錄的存取權限,例如:

uwsgi_store_access user:rw group:rw all:r;

如果指定了任何 groupall 存取權限,則可以省略 user 權限。

uwsgi_store_access group:rw all:r;

語法 uwsgi_temp_file_write_size size;
預設值
uwsgi_temp_file_write_size 8k|16k;
上下文 httpserverlocation

當啟用將來自 uwsgi 伺服器的回應緩衝至暫存檔時,限制每次寫入暫存檔的資料 size 大小。預設情況下,size 的限制由 uwsgi_buffer_sizeuwsgi_buffers 指令設定的兩個緩衝區決定。暫存檔的最大大小由 uwsgi_max_temp_file_size 指令設定。

語法 uwsgi_temp_path path [level1 [level2 [level3]]];
預設值
uwsgi_temp_path uwsgi_temp;
上下文 httpserverlocation

定義一個目錄,用於儲存從 uwsgi 伺服器接收到的資料暫存檔。在指定的目錄下可以使用最多三層子目錄結構。例如,在以下配置中:

uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;

一個暫存檔可能看起來像這樣:

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

另請參閱 uwsgi_cache_path 指令的 use_temp_path 參數。