詳解Nginx伺服器中配置超時時間

2021-07-23 19:29:31 字數 3704 閱讀 6343

這篇文章主要介紹了nginx伺服器中配置超時時間的方法,同時也對nginx中的時間管理機制作了詳細的介紹,需要的朋友可以參考下

一、啥時候用到

用來設定請求資源和伺服器返回的時間,保證乙個請求占用固定時間,超出後報504超時!這樣可以保證乙個請求占用過長時間。

二、主要引數

使用nginx伺服器如果遇到timeou情況時可以如下設定引數,使用fastcgi:

fastcgi_connect_timeout 75;  鏈結

fastcgi_read_timeout 600;   讀取

fastcgi_send_timeout 600;   發請求

這兩個選項.

fastcgi_read_timeout是指fastcgi程序向nginx程序傳送response的整個過程的超時時間

fastcgi_send_timeout是指nginx程序向fastcgi程序傳送request的整個過程的超時時間

這兩個選項預設都是秒(s),可以手動指定為分鐘(m),小時(h)等

三、其他常用引數以及引數說明

keepalive_timeout  600;   連線超時時間,1分鐘,具體時間可以根據請求(例如後台匯入)需要的時間來設定

proxy_connect_timeout 600;    1分鐘

proxy_read_timeout 600;    1分鐘

nginx超時配置引數說明:

keepalive_timeout

語法 keepalive_timeout timeout [ header_timeout ]

預設值 75s

上下文 http server location

說明 第乙個引數指定了與client的keep-alive連線超時時間。伺服器將會在這個時間後關閉連線。可選的第二個引數指定了在響應頭keep-alive: timeout=time中的time值。這個頭能夠讓一些瀏覽器主動關閉連線,這樣伺服器就不必要去關閉連線了。沒有這個引數,nginx不會傳送keep-alive響應頭(儘管並不是由這個頭來決定連線是否「keep-alive」)

兩個引數的值可並不相同

注意不同瀏覽器怎麼處理「keep-alive」頭

msie和opera忽略掉"keep-alive: timeout=" header.

msie保持連線大約60-65秒,然後傳送tcp rst

opera永久保持長連線

mozilla keeps the connection alive for n plus about 1-10 seconds.

konqueror保持長連線n秒

proxy_connect_timeout

語法 proxy_connect_timeout time

預設值 60s

上下文 http server location

說明 該指令設定與upstream server的連線超時時間,有必要記住,這個超時不能超過75秒。

這個不是等待後端返回頁面的時間,那是由proxy_read_timeout宣告的。如果你的upstream伺服器起來了,但是hanging住了(例如,沒有足夠的執行緒處理請求,所以把你的請求放到請求池裡稍後處理),那麼這個宣告是沒有用的,由於與upstream伺服器的連線已經建立了。

proxy_read_timeout

語法 proxy_read_timeout time

預設值 60s

上下文 http server location

說明 該指令設定與**伺服器的讀超時時間。它決定了nginx會等待多長時間來獲得請求的響應。這個時間不是獲得整個response的時間,而是兩次reading操作的時間。

client_header_timeout

語法 client_header_timeout time

預設值 60s

上下文 http server

說明 指定等待client傳送乙個請求頭的超時時間(例如:get / http/1.1).僅當在一次read中,沒有收到請求頭,才會算成超時。如果在超時時間內,client沒傳送任何東西,nginx返回http狀態碼408(「request timed out」)

client_body_timeout

語法 client_body_timeout time

預設值 60s

上下文 http server location

說明 該指令設定請求體(request body)的讀超時時間。僅當在一次readstep中,沒有得到請求體,就會設為超時。超時後,nginx返回http狀態碼408(「request timed out」)

lingering_timeout

語法 lingering_timeout time

預設值 5s

上下文 http server location

說明 lingering_close生效後,在關閉連線前,會檢測是否有使用者傳送的資料到達伺服器,如果超過lingering_timeout時間後還沒有資料可讀,就直接關閉連線;否則,必須在讀取完連線緩衝區上的資料並丟棄掉後才會關閉連線。

resolver_timeout

語法 resolver_timeout time

預設值 30s

上下文 http server location

說明 該指令設定dns解析超時時間

proxy_send_timeout

語法 proxy_send_timeout time

預設值 60s

上下文 http server location

說明 這個指定設定了傳送請求給upstream伺服器的超時時間。超時設定不是為了整個傳送期間,而是在兩次write操作期間。如果超時後,upstream沒有收到新的資料,nginx會關閉連線

proxy_upstream_fail_timeout(fail_timeout)

語法 server address [fail_timeout=30s]

預設值 10s

上下文 upstream

說明 upstream模組下 server指令的引數,設定了某乙個upstream後端失敗了指定次數(max_fails)後,該後端不可操作的時間,預設為10秒

四、例項

這裡來看乙個把nginx的超時時間上調的例子。

看看時間是否符合要求,在nginx.config裡面的三個引數:

以上的單位是秒。

如果使用了nginx的**,可以在塊裡加上:

?

1

2

3

proxy_connect_timeout 300s;

proxy_send_timeout 300s;

proxy_read_timeout 300s;

變成:?

1

2

3

4

5

6

7

8

9

10

11

location /foo

Nginx伺服器配置詳解

從圖中可以看出主要包含以下幾大部分內容 1.全域性塊 該部分配置主要影響nginx全域性,通常包括下面幾個部分 2.events塊 該部分配置主要影響nginx伺服器與使用者的網路連線,主要包括 3.http塊 4.server塊 5.location塊參考 指令格式為 location uri u...

Nginx伺服器基礎配置詳解

預設情況下,nginx伺服器配置檔案都存放在安裝目錄conf中,主配置檔案名為nginx.conf 其內容如下 user nobody 全域性塊 從配置檔案我們可以總結如下 nginix.conf配置一共有三塊組成 全域性塊 events塊和http塊。在http塊中,包含多個server塊,每個s...

Nginx 伺服器配置

我是body內容 我是html注釋內容 在瀏覽器上看到當前頁面的顯示內容兩種方式 1,直接拖動該html檔案到瀏覽器中 2,將該檔案部署到伺服器 bs結構中的關鍵服務軟體,可以執行各種程式,提供各種資源資訊,例如 tomcat nginx,jboss 中,通過瀏覽器位址列訪問該檔案 apache 組...