ngx_http_memcached_module 模組
ngx_http_memcached_module
模組用於從 memcached 伺服器取得回應。金鑰設定於 $memcached_key
變數中。回應應事先透過 nginx 外部的方式放入 memcached 中。
範例配置
server { location / { set $memcached_key "$uri?$args"; memcached_pass host:11211; error_page 404 502 504 = @fallback; } location @fallback { proxy_pass http://backend; } }
指令
語法 |
memcached_bind |
---|---|
預設 | — |
上下文 |
http , server , location |
此指令出現於 0.8.22 版本。
使連往 memcached 伺服器的外送連線,源自指定的本機 IP 位址,並帶有可選的埠 (1.11.2)。參數值可以包含變數 (1.3.12)。特殊值 off
(1.3.12) 會取消從先前的配置層級繼承的 memcached_bind
指令的效果,這允許系統自動指派本機 IP 位址和埠。
transparent
參數 (1.11.0) 允許連往 memcached 伺服器的外送連線,源自非本機 IP 位址,例如,來自用戶端的實際 IP 位址。
memcached_bind $remote_addr transparent;
為了使此參數生效,通常需要以超級使用者權限執行 nginx worker 程序。在 Linux 上則不需要 (1.13.8),因為如果指定了 transparent
參數,worker 程序會從主程序繼承 CAP_NET_RAW
功能。此外,也需要設定核心路由表,以攔截來自 memcached 伺服器的網路流量。
語法 |
memcached_buffer_size |
---|---|
預設 |
memcached_buffer_size 4k|8k; |
上下文 |
http , server , location |
設定用於讀取從 memcached 伺服器接收之回應的緩衝區 size
。回應在接收到時會同步傳遞給用戶端。
語法 |
memcached_connect_timeout |
---|---|
預設 |
memcached_connect_timeout 60s; |
上下文 |
http , server , location |
定義與 memcached 伺服器建立連線的逾時時間。應注意,此逾時時間通常不能超過 75 秒。
語法 |
memcached_gzip_flag |
---|---|
預設 | — |
上下文 |
http , server , location |
此指令出現於 1.3.6 版本。
啟用測試 memcached 伺服器回應中是否有 flag
,如果設定了標記,則將 "Content-Encoding
" 回應標頭欄位設定為 "gzip
"。
語法 |
memcached_next_upstream |
---|---|
預設 |
memcached_next_upstream error timeout; |
上下文 |
http , server , location |
指定在哪些情況下應將請求傳遞至下一個伺服器。
error
- 在與伺服器建立連線、將請求傳遞至伺服器或讀取回應標頭時發生錯誤;
timeout
- 在與伺服器建立連線、將請求傳遞至伺服器或讀取回應標頭時發生逾時;
invalid_response
- 伺服器傳回空的回應或無效的回應;
not_found
- 在伺服器上找不到回應;
off
- 停用將請求傳遞至下一個伺服器。
應記住,只有在尚未將任何內容傳送至用戶端時,才有可能將請求傳遞至下一個伺服器。也就是說,如果回應傳輸過程中發生錯誤或逾時,則無法修正此問題。
此指令也定義什麼被視為與伺服器通訊的不成功嘗試。error
、timeout
和 invalid_response
的情況永遠被視為不成功的嘗試,即使它們未在指令中指定。not_found
的情況永遠不被視為不成功的嘗試。
語法 |
memcached_next_upstream_timeout |
---|---|
預設 |
memcached_next_upstream_timeout 0; |
上下文 |
http , server , location |
此指令出現於 1.7.5 版本。
限制請求可傳遞至下一個伺服器的時間。0
值會關閉此限制。
語法 |
memcached_next_upstream_tries |
---|---|
預設 |
memcached_next_upstream_tries 0; |
上下文 |
http , server , location |
此指令出現於 1.7.5 版本。
限制將請求傳遞至下一個伺服器的可能嘗試次數。0
值會關閉此限制。
語法 |
memcached_pass |
---|---|
預設 | — |
上下文 |
location , if in location |
設定 memcached 伺服器位址。該位址可以指定為網域名稱或 IP 位址,以及一個埠。
memcached_pass localhost:11211;
或指定為 UNIX 網域 Socket 路徑。
memcached_pass unix:/tmp/memcached.socket;
如果網域名稱解析為多個位址,所有位址將以循環方式使用。此外,位址也可以指定為伺服器群組。
語法 |
memcached_read_timeout |
---|---|
預設 |
memcached_read_timeout 60s; |
上下文 |
http , server , location |
定義從 memcached 伺服器讀取回應的逾時時間。逾時時間僅設定在兩個連續讀取操作之間,而不是針對整個回應的傳輸。如果 memcached 伺服器在此時間內沒有傳輸任何內容,則連線將關閉。
語法 |
memcached_send_timeout |
---|---|
預設 |
memcached_send_timeout 60s; |
上下文 |
http , server , location |
設定將請求傳輸至 memcached 伺服器的逾時時間。逾時時間僅設定在兩個連續寫入操作之間,而不是針對整個請求的傳輸。如果 memcached 伺服器在此時間內沒有收到任何內容,則連線將關閉。
語法 |
memcached_socket_keepalive |
---|---|
預設 |
memcached_socket_keepalive off; |
上下文 |
http , server , location |
此指令出現於 1.15.6 版本。
為連往 memcached 伺服器的外送連線設定「TCP keepalive」行為。預設情況下,作業系統的設定對 Socket 有效。如果將指令設定為值 "on
",則會針對 Socket 開啟 SO_KEEPALIVE
Socket 選項。
嵌入變數
$memcached_key
- 定義從 memcached 伺服器取得回應的金鑰。