Nginx timeout超時(shí)配置詳解
最近項(xiàng)目中用到了nginx,后臺(tái)用的是Java, 發(fā)現(xiàn)有一個(gè)請(qǐng)求后臺(tái)處理操過(guò)了1分鐘,結(jié)果請(qǐng)求Status Code為504 Gateway Time-out.
理解了下nginx 所有timeout相關(guān)的配置,如下:
keepalive_timeout
HTTP 有一個(gè) KeepAlive 模式,它告訴 webserver 在處理完一個(gè)請(qǐng)求后保持這個(gè) TCP 連接的打開(kāi)狀態(tài)。若接收到來(lái)自客戶端的其它請(qǐng)求,服務(wù)端會(huì)利用這個(gè)未被關(guān)閉的連接,而不需要再建立一個(gè)連接。
http keep-alive, 網(wǎng)頁(yè)的每一個(gè)請(qǐng)求都是HTTP (圖片, CSS等), 而打開(kāi)HTTP 請(qǐng)求是要先建立TCP 連接, 而如果一個(gè)頁(yè)面每個(gè)請(qǐng)求都要打開(kāi)及關(guān)閉一個(gè)TCP 連接就會(huì)做成資源的浪費(fèi). keepalive_timeout 就是當(dāng)一個(gè)HTTP 請(qǐng)求完成, 其TCP 連接會(huì)存留下來(lái)的時(shí)間, 如果這時(shí)有另一個(gè)HTTP 請(qǐng)求過(guò)來(lái), 會(huì)複用這個(gè)TCP 連接, 如果再?zèng)]有新的請(qǐng)求過(guò)來(lái), 才會(huì)關(guān)閉其TCP連接
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
client_max_body_size 8192m;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
server {
listen 80 so_keepalive=30m::;
listen 443 default ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/portalkey.key;
#ssl_password_file /etc/nginx/ssl/ssl.pass;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_request_buffering off;
proxy_pass http://127.0.0.1:8011/;
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
send_timeout 180;
}
location /test1_url/ {
proxy_pass http://127.0.0.1:8008/;
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
send_timeout 180;
}
location /test2_url/ {
proxy_pass http://127.0.0.1:3000/;
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
send_timeout 180;
}
}
}
# 配置段: http,默認(rèn)75s
keepalive_timeout 60;
- send_timeout :發(fā)送數(shù)據(jù)至客戶端超時(shí), 默認(rèn)60s, 如果連續(xù)的60s內(nèi)客戶端沒(méi)有收到1個(gè)字節(jié), 連接關(guān)閉
- proxy_connect_timeout: nginx與upstream server的連接超時(shí)時(shí)間
- proxy_read_timeout: nginx接收upstream server數(shù)據(jù)超時(shí), 默認(rèn)60s, 如果連續(xù)的60s內(nèi)沒(méi)有收到1個(gè)字節(jié), 連接關(guān)閉
- proxy_send_timeout: nginx發(fā)送數(shù)據(jù)至upstream server超時(shí), 默認(rèn)60s, 如果連續(xù)的60s內(nèi)沒(méi)有發(fā)送1個(gè)字節(jié), 連接關(guān)閉
so_timeout:
當(dāng)用戶跟SERVER開(kāi)啟了TCP CONNECTION --> 一段長(zhǎng)時(shí)間這個(gè)CONNECTION 沒(méi)traffic (so_keepalive timeout) --> SERVER 發(fā)出探測(cè)包看用戶是否還存在 --> 若探測(cè)包沒(méi)回, 則關(guān)閉TCP CONNECTION
so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]
so_keepalive=30m::10 will set the idle timeout (TCP_KEEPIDLE) to 30 minutes, leave the probe interval (TCP_KEEPINTVL) at its system default, and set the probes count (TCP_KEEPCNT) to 10 probes.
以上三個(gè)參數(shù)只能使用一個(gè),不能同時(shí)使用, 比如so_keepalive=on, so_keepalive=off或者so_keepalive=30s::(表示等待30s沒(méi)有數(shù)據(jù)報(bào)文發(fā)送探測(cè)報(bào)文)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解nginx靜態(tài)資源服務(wù)器簡(jiǎn)單配置
這篇文章主要介紹了詳解nginx靜態(tài)資源服務(wù)器簡(jiǎn)單配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
本地通過(guò)nginx配置反向代理的全過(guò)程記錄
這篇文章主要給大家介紹了關(guān)于本地通過(guò)nginx配置反向代理的全過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Nginx編譯參數(shù)大全 configure參數(shù)中文詳解
這篇文章主要介紹了Nginx編譯參數(shù)大全,Nginx configure參數(shù)中文詳解,需要的朋友可以參考下2014-04-04
nginx關(guān)閉/重啟/啟動(dòng)的操作方法
在本篇文章里小編給各位分享的是關(guān)于nginx關(guān)閉/重啟/啟動(dòng)的操作方法,有興趣的朋友們可以學(xué)習(xí)參考下。2020-03-03
Nginx實(shí)戰(zhàn)之反向代理WebSocket的配置實(shí)例
最近在工作中遇到一個(gè)需求,需要使用 nginx 反向代理websocket,經(jīng)過(guò)查找一番資料,目前已經(jīng)測(cè)試通過(guò),所以這篇文章主要給大家介紹了Nginx反向代理WebSocket配置的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-04-04
Nginx配置統(tǒng)計(jì)流量帶寬請(qǐng)求及記錄實(shí)時(shí)請(qǐng)求狀態(tài)的方法
這篇文章主要介紹了Nginx中配置統(tǒng)計(jì)流量帶寬請(qǐng)求及記錄實(shí)時(shí)請(qǐng)求狀態(tài)的方法,分別用到了ngx_req_status和ngx_realtime_request模塊,需要的朋友可以參考下2016-01-01
Nginx實(shí)現(xiàn)TCP和UDP代理的方法步驟
Nginx 1.9.13 及以上版本支持TCP/UDP代理功能,通過(guò)配置監(jiān)聽(tīng)端口、后端服務(wù)器地址等參數(shù),實(shí)現(xiàn)客戶端請(qǐng)求的轉(zhuǎn)發(fā)和響應(yīng)的返回,下面就來(lái)介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2024-12-12

