模組 ngx_http_uwsgi_module
ngx_http_uwsgi_module
模組允許將請求傳遞到 uwsgi 伺服器。
設定範例
location / { include uwsgi_params; uwsgi_pass localhost:9000; }
指令
語法 |
uwsgi_bind |
---|---|
預設值 | — |
上下文 |
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 上,則不需要 (1.13.8),因為如果指定了 transparent
參數,工作程序會從主程序繼承 CAP_NET_RAW
功能。也必須設定核心路由表,以攔截來自 uwsgi 伺服器的網路流量。
語法 |
uwsgi_buffer_size |
---|---|
預設值 |
uwsgi_buffer_size 4k|8k; |
上下文 |
http ,server ,location |
設定用於讀取從 uwsgi 伺服器收到的回應的第一部分之緩衝區的 size
。這部分通常包含小型回應標頭。預設情況下,緩衝區大小等於一個記憶體頁面。這取決於平台,為 4K 或 8K。可以將其調小。
語法 |
uwsgi_buffering |
---|---|
預設值 |
uwsgi_buffering on; |
上下文 |
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」回應標頭欄位中傳遞「yes
」或「no
」來啟用或停用緩衝處理。可以使用 uwsgi_ignore_headers 指令停用此功能。
語法 |
uwsgi_buffers |
---|---|
預設值 |
uwsgi_buffers 8 4k|8k; |
上下文 |
http ,server ,location |
設定用於讀取來自 uwsgi 伺服器的回應的緩衝區的 number
和 size
,用於單一連線。預設情況下,緩衝區大小等於一個記憶體頁面。這取決於平台,為 4K 或 8K。
語法 |
uwsgi_busy_buffers_size |
---|---|
預設值 |
uwsgi_busy_buffers_size 8k|16k; |
上下文 |
http ,server ,location |
當啟用來自 uwsgi 伺服器的回應的 緩衝處理時,會限制在回應尚未完全讀取時,可以用於將回應傳送至用戶端的緩衝區的總 size
。同時,其餘的緩衝區可用於讀取回應,並且在需要時,將回應的一部分緩衝到暫存檔案中。預設情況下,size
受限於 uwsgi_buffer_size 和 uwsgi_buffers 指令設定的兩個緩衝區的大小。
語法 |
uwsgi_cache |
---|---|
預設值 |
uwsgi_cache off; |
上下文 |
http ,server ,location |
定義用於快取的共用記憶體區域。相同的區域可以在多個地方使用。參數值可以包含變數 (1.7.9)。off
參數會停用從先前設定層級繼承的快取。
語法 |
uwsgi_cache_background_update |
---|---|
預設值 |
uwsgi_cache_background_update off; |
上下文 |
http ,server ,location |
此指令出現在 1.11.10 版中。
允許啟動背景子請求以更新過期的快取項目,同時將過時的快取回應傳回給用戶端。請注意,在更新過時快取回應時,必須允許使用過時快取回應。
語法 |
uwsgi_cache_bypass |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
定義在哪些條件下不會從快取中取得回應。如果字串參數的至少一個值不為空且不等於「0」,則不會從快取中取得回應
uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment; uwsgi_cache_bypass $http_pragma $http_authorization;
可以與 uwsgi_no_cache 指令一起使用。
語法 |
uwsgi_cache_key |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
定義快取的索引鍵,例如
uwsgi_cache_key localhost:9000$request_uri;
語法 |
uwsgi_cache_lock |
---|---|
預設值 |
uwsgi_cache_lock off; |
上下文 |
http ,server ,location |
此指令出現在 1.1.12 版中。
啟用時,一次只允許一個請求透過將請求傳遞至 uwsgi 伺服器,來填入根據 uwsgi_cache_key 指令所識別的新快取元素。同一快取元素的其他請求將會等待回應出現在快取中,或等到此元素的快取鎖定被釋放,最多等待 uwsgi_cache_lock_timeout 指令所設定的時間。
語法 |
uwsgi_cache_lock_age |
---|---|
預設值 |
uwsgi_cache_lock_age 5s; |
上下文 |
http ,server ,location |
此指令出現在 1.7.8 版中。
如果傳遞到 uwsgi 伺服器以填入新快取元素的上一個請求在指定的 time
內尚未完成,則可能會將另一個請求傳遞至 uwsgi 伺服器。
語法 |
uwsgi_cache_lock_timeout |
---|---|
預設值 |
uwsgi_cache_lock_timeout 5s; |
上下文 |
http ,server ,location |
此指令出現在 1.1.12 版中。
設定 uwsgi_cache_lock 的逾時。當 time
到期時,請求將會傳遞至 uwsgi 伺服器,但是回應不會被快取。
在 1.7.8 之前的版本中,回應可以被快取。
語法 |
uwsgi_cache_max_range_offset |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.11.6 版中。
設定位元組範圍請求的位元組偏移量。如果範圍超出偏移量,則範圍請求會傳遞至 uwsgi 伺服器,且回應不會被快取。
語法 |
uwsgi_cache_methods |
---|---|
預設值 |
uwsgi_cache_methods GET HEAD; |
上下文 |
http ,server ,location |
如果用戶端請求方法在此指令中列出,則回應將被快取。「GET
」和「HEAD
」方法始終會新增至清單中,但建議明確指定它們。另請參閱 uwsgi_no_cache 指令。
語法 |
uwsgi_cache_min_uses |
---|---|
預設值 |
uwsgi_cache_min_uses 1; |
上下文 |
http ,server ,location |
設定回應將被快取之前要求的 number
。
語法 |
uwsgi_cache_path |
---|---|
預設值 | — |
上下文 |
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
,則暫存檔案將直接放在快取目錄中。
此外,所有作用中的索引鍵和有關資料的資訊都儲存在共用記憶體區域中,其 name
和 size
由 keys_zone
參數設定。一個 megabyte 區域可以儲存大約 8 千個索引鍵。
作為商業訂閱的一部分,共用記憶體區域也儲存擴充的快取資訊,因此,需要為相同數量的索引鍵指定更大的區域大小。例如,一個 megabyte 區域可以儲存大約 4 千個索引鍵。
在 inactive
參數指定的時間內未存取的快取資料將會從快取中移除,而與其新鮮度無關。預設情況下,inactive
設定為 10 分鐘。
特殊的「快取管理器」程序會監控 max_size
參數設定的最大快取大小,以及快取檔案系統上 min_free
(1.19.1) 參數設定的最小可用空間量。當大小超過限制或可用空間不足時,它會移除最近最少使用的資料。資料的移除會根據 manager_files
、manager_threshold
和 manager_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 ...; |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 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 |
---|---|
預設值 |
uwsgi_cache_revalidate off; |
上下文 |
http ,server ,location |
此指令出現在 1.5.7 版本中。
啟用使用帶有「If-Modified-Since」和「If-None-Match」標頭欄位的條件請求重新驗證過期的快取項目。
語法 |
uwsgi_cache_use_stale |
---|---|
預設值 |
uwsgi_cache_use_stale off; |
上下文 |
http ,server ,location |
決定在與 uwsgi 伺服器通訊期間發生錯誤時,在哪些情況下可以使用過期的快取響應。該指令的參數與 uwsgi_next_upstream 指令的參數相符。
如果無法選擇 uwsgi 伺服器來處理請求,error
參數也允許使用過期的快取響應。
此外,如果目前正在更新過期的快取響應,updating
參數允許使用過期的快取響應。這允許在更新快取資料時,盡可能減少對 uwsgi 伺服器的存取次數。
在響應過期後,也可以直接在響應標頭中啟用在指定秒數內使用過期的快取響應 (1.11.10)。這比使用指令參數的優先順序較低。
- 「Cache-Control」標頭欄位的「stale-while-revalidate」擴充允許在目前正在更新過期的快取響應時使用該響應。
- 「Cache-Control」標頭欄位的「stale-if-error」擴充允許在發生錯誤時使用過期的快取響應。
為了盡可能減少在填入新的快取元素時對 uwsgi 伺服器的存取次數,可以使用 uwsgi_cache_lock 指令。
語法 |
uwsgi_cache_valid [ |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
為不同的響應代碼設定快取時間。例如,以下指令
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;
快取參數也可以直接在響應標頭中設定。這比使用指令設定快取時間的優先順序較高。
- 「X-Accel-Expires」標頭欄位設定響應的快取時間(以秒為單位)。零值會停用響應的快取。如果該值以
@
字首開頭,則會設定絕對時間(以自 Epoch 以來的秒數表示),響應可以在該時間之前快取。 - 如果標頭不包含「X-Accel-Expires」欄位,則可以在標頭欄位「Expires」或「Cache-Control」中設定快取參數。
- 如果標頭包含「Set-Cookie」欄位,則不會快取此類響應。
- 如果標頭包含具有特殊值「
*
」的「Vary」欄位,則不會快取此類響應 (1.7.7)。如果標頭包含具有另一個值的「Vary」欄位,則會快取此類響應,並考慮到相應的請求標頭欄位 (1.7.7)。
可以使用 uwsgi_ignore_headers 指令停用對這些響應標頭欄位中的一個或多個進行處理。
語法 |
uwsgi_connect_timeout |
---|---|
預設值 |
uwsgi_connect_timeout 60s; |
上下文 |
http ,server ,location |
定義與 uwsgi 伺服器建立連線的逾時時間。應注意的是,此逾時時間通常不能超過 75 秒。
語法 |
uwsgi_force_ranges |
---|---|
預設值 |
uwsgi_force_ranges off; |
上下文 |
http ,server ,location |
此指令出現在 1.7.7 版本中。
無論這些響應中的「Accept-Ranges」欄位如何,都啟用對來自 uwsgi 伺服器的快取和未快取響應的位元組範圍支援。
語法 |
uwsgi_hide_header |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
預設情況下,nginx 不會將 uwsgi 伺服器響應中的「Status」和「X-Accel-...」標頭欄位傳遞給用戶端。uwsgi_hide_header
指令會設定其他不會被傳遞的欄位。相反地,如果需要允許傳遞欄位,則可以使用 uwsgi_pass_header 指令。
語法 |
uwsgi_ignore_client_abort |
---|---|
預設值 |
uwsgi_ignore_client_abort off; |
上下文 |
http ,server ,location |
決定當用戶端在未等待響應的情況下關閉連線時,是否應該關閉與 uwsgi 伺服器的連線。
語法 |
uwsgi_ignore_headers |
---|---|
預設值 | — |
上下文 |
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」設定響應的所需字元集。
語法 |
uwsgi_intercept_errors |
---|---|
預設值 |
uwsgi_intercept_errors off; |
上下文 |
http ,server ,location |
決定是否應將代碼大於或等於 300 的 uwsgi 伺服器響應傳遞給用戶端,還是將其攔截並重新導向至 nginx 以使用 error_page 指令進行處理。
語法 |
uwsgi_limit_rate |
---|---|
預設值 |
uwsgi_limit_rate 0; |
上下文 |
http ,server ,location |
此指令出現在 1.7.7 版本中。
限制從 uwsgi 伺服器讀取響應的速度。rate
以每秒位元組數指定。零值會停用速率限制。該限制是按每個請求設定的,因此,如果 nginx 同時開啟兩個與 uwsgi 伺服器的連線,則整體速率將是指定限制的兩倍。只有在啟用來自 uwsgi 伺服器的響應緩衝時,限制才會生效。參數值可以包含變數 (1.27.0)。
語法 |
uwsgi_max_temp_file_size |
---|---|
預設值 |
uwsgi_max_temp_file_size 1024m; |
上下文 |
http ,server ,location |
當啟用來自 uwsgi 伺服器的響應緩衝,並且整個響應不符合 uwsgi_buffer_size 和 uwsgi_buffers 指令設定的緩衝區時,可以將部分響應儲存到臨時檔案。此指令會設定臨時檔案的最大 size
。一次寫入臨時檔案的資料大小由 uwsgi_temp_file_write_size 指令設定。
零值會停用將響應緩衝到臨時檔案。
此限制不適用於將快取或儲存在磁碟上的響應。
語法 |
uwsgi_modifier1 |
---|---|
預設值 |
uwsgi_modifier1 0; |
上下文 |
http ,server ,location |
設定 uwsgi 資料包標頭中 modifier1
欄位的值。
語法 |
uwsgi_modifier2 |
---|---|
預設值 |
uwsgi_modifier2 0; |
上下文 |
http ,server ,location |
設定 uwsgi 資料包標頭中 modifier2
欄位的值。
語法 |
uwsgi_next_upstream |
---|---|
預設值 |
uwsgi_next_upstream error timeout; |
上下文 |
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
- 通常,如果已將請求傳送到上游伺服器,則具有非冪等方法 (
POST
、LOCK
、PATCH
) 的請求不會傳遞到下一個伺服器 (1.9.13);明確啟用此選項允許重試此類請求; off
- 停用將請求傳遞到下一個伺服器。
務必記住,只有在尚未將任何內容傳送給用戶端時,才有可能將請求傳遞到下一個伺服器。也就是說,如果在傳輸回應的過程中發生錯誤或逾時,則無法修正此問題。
該指令還定義了與伺服器通訊的哪些情況被視為不成功的嘗試。error
、timeout
和 invalid_header
的情況始終被視為不成功的嘗試,即使它們未在指令中指定。只有在指令中指定了 http_500
、http_503
和 http_429
的情況下,才會被視為不成功的嘗試。http_403
和 http_404
的情況永遠不會被視為不成功的嘗試。
語法 |
uwsgi_next_upstream_timeout |
---|---|
預設值 |
uwsgi_next_upstream_timeout 0; |
上下文 |
http ,server ,location |
此指令出現在 1.7.5 版本中。
限制將請求傳遞到下一個伺服器的時間。值為 0
時會關閉此限制。
語法 |
uwsgi_next_upstream_tries |
---|---|
預設值 |
uwsgi_next_upstream_tries 0; |
上下文 |
http ,server ,location |
此指令出現在 1.7.5 版本中。
限制將請求傳遞到下一個伺服器的可能嘗試次數。值為 0
時會關閉此限制。
語法 |
uwsgi_no_cache |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
定義在哪些條件下回應將不會被儲存到快取中。如果字串參數中至少有一個值不為空且不等於 “0”,則回應將不會被儲存。
uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment; uwsgi_no_cache $http_pragma $http_authorization;
可以與 uwsgi_cache_bypass 指令一起使用。
語法 |
uwsgi_param |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
設定應該傳遞給 uwsgi 伺服器的 parameter
。value
可以包含文字、變數及其組合。只有當目前層級沒有定義任何 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 [ |
---|---|
預設值 | — |
上下文 |
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 |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
允許將否則將停用的標頭欄位從 uwsgi 伺服器傳遞到用戶端。
語法 |
uwsgi_pass_request_body |
---|---|
預設值 |
uwsgi_pass_request_body on; |
上下文 |
http ,server ,location |
指示是否將原始請求主體傳遞給 uwsgi 伺服器。另請參閱 uwsgi_pass_request_headers 指令。
語法 |
uwsgi_pass_request_headers |
---|---|
預設值 |
uwsgi_pass_request_headers on; |
上下文 |
http ,server ,location |
指示是否將原始請求的標頭欄位傳遞給 uwsgi 伺服器。另請參閱 uwsgi_pass_request_body 指令。
語法 |
uwsgi_read_timeout |
---|---|
預設值 |
uwsgi_read_timeout 60s; |
上下文 |
http ,server ,location |
定義從 uwsgi 伺服器讀取回應的逾時時間。逾時時間僅設定在兩個連續的讀取操作之間,而不是針對整個回應的傳輸。如果 uwsgi 伺服器在此時間內未傳輸任何內容,則會關閉連線。
語法 |
uwsgi_request_buffering |
---|---|
預設值 |
uwsgi_request_buffering on; |
上下文 |
http ,server ,location |
此指令出現在 1.7.11 版本中。
啟用或停用用戶端請求主體的緩衝。
啟用緩衝時,會在將請求傳送到 uwsgi 伺服器之前,從用戶端讀取整個請求主體。
停用緩衝時,請求主體會在其接收到後立即傳送到 uwsgi 伺服器。在這種情況下,如果 nginx 已經開始傳送請求主體,則請求無法傳遞到下一個伺服器。
當使用 HTTP/1.1 分塊傳輸編碼傳送原始請求主體時,無論指令值為何,都會緩衝請求主體。
語法 |
uwsgi_send_timeout |
---|---|
預設值 |
uwsgi_send_timeout 60s; |
上下文 |
http ,server ,location |
設定將請求傳輸到 uwsgi 伺服器的逾時時間。逾時時間僅設定在兩個連續的寫入操作之間,而不是針對整個請求的傳輸。如果 uwsgi 伺服器在此時間內未接收到任何內容,則會關閉連線。
語法 |
uwsgi_socket_keepalive |
---|---|
預設值 |
uwsgi_socket_keepalive off; |
上下文 |
http ,server ,location |
此指令出現在 1.15.6 版本中。
設定與 uwsgi 伺服器的輸出連線的 “TCP keepalive” 行為。預設情況下,作業系統的設定對通訊端有效。如果指令設定為值 “on
”,則會為通訊端啟用 SO_KEEPALIVE
通訊端選項。
語法 |
uwsgi_ssl_certificate |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.7.8 版中。
指定一個 file
,其中包含用於驗證安全 uwsgi 伺服器的 PEM 格式憑證。
自 1.21.0 版本起,可以在 file
名稱中使用變數。
語法 |
uwsgi_ssl_certificate_key |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.7.8 版中。
指定一個 file
,其中包含用於驗證安全 uwsgi 伺服器的 PEM 格式秘密金鑰。
可以指定值 engine
:name
:id
來代替 file
(1.7.9),它會從 OpenSSL 引擎 name
載入具有指定 id
的秘密金鑰。
自 1.21.0 版本起,可以在 file
名稱中使用變數。
語法 |
uwsgi_ssl_ciphers |
---|---|
預設值 |
uwsgi_ssl_ciphers DEFAULT; |
上下文 |
http ,server ,location |
此指令出現在 1.5.8 版本中。
指定對安全 uwsgi 伺服器的請求啟用的密碼。密碼以 OpenSSL 程式庫理解的格式指定。
可以使用 “openssl ciphers
” 命令檢視完整清單。
語法 |
uwsgi_ssl_conf_command |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.19.4 版本中。
設定與安全 uwsgi 伺服器建立連線時的任意 OpenSSL 設定命令。
當使用 OpenSSL 1.0.2 或更高版本時支援此指令。
可以在同一層級指定多個 uwsgi_ssl_conf_command
指令。只有當目前層級沒有定義任何 uwsgi_ssl_conf_command
指令時,這些指令才會從先前的設定層級繼承。
請注意,直接設定 OpenSSL 可能會導致非預期的行為。
語法 |
uwsgi_ssl_crl |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.7.0 版本中。
指定一個 file
,其中包含用於驗證安全 uwsgi 伺服器憑證的 PEM 格式的已撤銷憑證 (CRL)。
語法 |
uwsgi_ssl_key_log path; |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.27.2 版本中。
啟用安全 uwsgi 伺服器連線 SSL 金鑰的記錄,並指定金鑰記錄檔的路徑。金鑰以與 Wireshark 相容的 SSLKEYLOGFILE 格式記錄。
此指令可作為我們的 商業訂閱的一部分提供。
語法 |
uwsgi_ssl_name |
---|---|
預設值 |
uwsgi_ssl_name host from uwsgi_pass; |
上下文 |
http ,server ,location |
此指令出現在 1.7.0 版本中。
允許覆寫用於驗證安全 uwsgi 伺服器憑證的伺服器名稱,並在與安全 uwsgi 伺服器建立連線時通過 SNI 傳遞。
預設情況下,使用 uwsgi_pass 中的主機部分。
語法 |
uwsgi_ssl_password_file |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.7.8 版中。
指定一個 file
,其中包含用於秘密金鑰的密碼短語,其中每個密碼短語都指定在單獨的行上。載入金鑰時,會依次嘗試密碼短語。
語法 |
uwsgi_ssl_protocols [ |
---|---|
預設值 |
uwsgi_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; |
上下文 |
http ,server ,location |
此指令出現在 1.5.8 版本中。
為對安全 uwsgi 伺服器的請求啟用指定的協定。
自 1.23.4 版本起,預設使用 TLSv1.3
參數。
語法 |
uwsgi_ssl_server_name |
---|---|
預設值 |
uwsgi_ssl_server_name off; |
上下文 |
http ,server ,location |
此指令出現在 1.7.0 版本中。
啟用或停用在與安全 uwsgi 伺服器建立連線時,通過 TLS 伺服器名稱指示擴展 (SNI, RFC 6066) 傳遞伺服器名稱。
語法 |
uwsgi_ssl_session_reuse |
---|---|
預設值 |
uwsgi_ssl_session_reuse on; |
上下文 |
http ,server ,location |
此指令出現在 1.5.8 版本中。
決定在使用安全 uwsgi 伺服器時是否可以重複使用 SSL 工作階段。如果記錄中出現錯誤 “SSL3_GET_FINISHED:digest check failed
”,請嘗試停用工作階段重複使用。
語法 |
uwsgi_ssl_trusted_certificate |
---|---|
預設值 | — |
上下文 |
http ,server ,location |
此指令出現在 1.7.0 版本中。
指定一個 file
,其中包含用於驗證安全 uwsgi 伺服器憑證的 PEM 格式的信任 CA 憑證。
語法 |
uwsgi_ssl_verify |
---|---|
預設值 |
uwsgi_ssl_verify off; |
上下文 |
http ,server ,location |
此指令出現在 1.7.0 版本中。
啟用或停用安全 uwsgi 伺服器憑證的驗證。
語法 |
uwsgi_ssl_verify_depth |
---|---|
預設值 |
uwsgi_ssl_verify_depth 1; |
上下文 |
http ,server ,location |
此指令出現在 1.7.0 版本中。
設定安全 uwsgi 伺服器憑證鏈中的驗證深度。
語法 |
uwsgi_store |
---|---|
預設值 |
uwsgi_store off; |
上下文 |
http ,server ,location |
啟用將檔案儲存到磁碟。on
參數會使用與 alias 或 root 指令相對應的路徑來儲存檔案。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 |
---|---|
預設值 |
uwsgi_store_access user:rw; |
上下文 |
http ,server ,location |
設定新建立的檔案和目錄的存取權限,例如:
uwsgi_store_access user:rw group:rw all:r;
如果指定了任何 group
或 all
存取權限,則可以省略 user
權限。
uwsgi_store_access group:rw all:r;
語法 |
uwsgi_temp_file_write_size |
---|---|
預設值 |
uwsgi_temp_file_write_size 8k|16k; |
上下文 |
http ,server ,location |
當啟用將來自 uwsgi 伺服器的回應緩衝至暫存檔時,限制每次寫入暫存檔的資料 size
大小。預設情況下,size
的限制由 uwsgi_buffer_size 和 uwsgi_buffers 指令設定的兩個緩衝區決定。暫存檔的最大大小由 uwsgi_max_temp_file_size 指令設定。
語法 |
uwsgi_temp_path |
---|---|
預設值 |
uwsgi_temp_path uwsgi_temp; |
上下文 |
http ,server ,location |
定義一個目錄,用於儲存從 uwsgi 伺服器接收到的資料暫存檔。在指定的目錄下可以使用最多三層子目錄結構。例如,在以下配置中:
uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;
一個暫存檔可能看起來像這樣:
/spool/nginx/uwsgi_temp/7/45/00000123457
另請參閱 uwsgi_cache_path 指令的 use_temp_path
參數。