一,為什么要做連接超時設置?
nginx在保持着與客戶端的連接時,要消耗cpu/內存/網絡等資源,
如果能在超出一定時間后自動斷開連接,
則可以及時釋放資源,起到優化性能、提高效率的作用
說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,keepalive的超時時長:keepalive_timeout
1,keepalive的作用:
HTTP 的 KeepAlive 模式:
webserver 在處理完一個請求后保持這個 TCP 連接的狀態仍然是打開。
如果再次接收到來自此客戶端的其它請求,
服務端會使用這個未關閉的連接,而不是再新建一個連接
2,keepalive的配置:
keepalive_timeout 60 45;
兩個參數分別是:
nginx服務的超時時間(默認值是75s,建議設置為60秒)
nginx在給瀏覽器的響應header信息中的超時時間
注意,第二個參數設置之后才會在瀏覽器端出現keepalive一項:
如圖:
3,nginx給header的超時信息並不是肯定會得到瀏覽器的執行
4,keepalive_timeout的值應該大於client_body_timeout
三,客戶端header的超時時長:client_header_timeout
client_header_timeout 15s;
默認值是60s
客戶端向服務端發送一個完整的 request header 的超時時間
如果60s內沒有收到完整的http request header,則為超時
如果客戶端超時,Nginx 返回 HTTP 408(Request Timed Out)。
四,客戶端body的超時時長:client_body_timeout
client_body_timeout 15s;
默認值是60s
客戶端向服務端發送 request body 的超時時間
如果連續的60s內沒有收到客戶端的1個字節,則表示超時
如果客戶端超時,Nginx 返回 HTTP 408(Request Timed Out)。
五,向客戶端發送數據超時時長:send_timeout
send_timeout 15s;
默認值是60s
send_timeout 指定客戶端的響應超時時間。
這個設置指的是在這段時間內,客戶端沒有讀取任何數據,nginx就會關閉連接.
六,如果有大文件上傳時需配置哪個指定?
有大文件上傳時,需要指定body的最大值
client_max_body_size 50m;
這個指定的默認值是1M,基本上不可能滿足使用需求
如果需要上傳較大的文件,在這里指定一個最大值
這里指定文件最大是50MB
七,查看nginx的版本:
[root@centos8 conf.d]# /usr/local/soft/nginx-1.18.0/sbin/nginx -v nginx version: nginx/1.18.0