最近項(xiàng)目中用到了nginx,后臺用的是Java, 發(fā)現(xiàn)有一個請求后臺處理操過了1分鐘,結(jié)果請求Status Code為504 Gateway Time-out.
理解了下nginx 所有timeout相關(guān)的配置,如下:
keepalive_timeout
HTTP 有一個 KeepAlive 模式,它告訴 webserver 在處理完一個請求后保持這個 TCP 連接的打開狀態(tài)。若接收到來自客戶端的其它請求,服務(wù)端會利用這個未被關(guān)閉的連接,而不需要再建立一個連接。
http keep-alive, 網(wǎng)頁的每一個請求都是HTTP (圖片, CSS等), 而打開HTTP 請求是要先建立TCP 連接, 而如果一個頁面每個請求都要打開及關(guān)閉一個TCP 連接就會做成資源的浪費(fèi). keepalive_timeout 就是當(dāng)一個HTTP 請求完成, 其TCP 連接會存留下來的時間, 如果這時有另一個HTTP 請求過來, 會複用這個TCP 連接, 如果再沒有新的請求過來, 才會關(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;
so_timeout:
當(dāng)用戶跟SERVER開啟了TCP CONNECTION --> 一段長時間這個CONNECTION 沒traffic (so_keepalive timeout) --> SERVER 發(fā)出探測包看用戶是否還存在 --> 若探測包沒回, 則關(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.
以上三個參數(shù)只能使用一個,不能同時使用, 比如so_keepalive=on, so_keepalive=off或者so_keepalive=30s::(表示等待30s沒有數(shù)據(jù)報(bào)文發(fā)送探測報(bào)文)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:雅安 安陽 臺灣 長治 中衛(wèi) 興安盟 大慶 清遠(yuǎn)
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Nginx timeout超時配置詳解》,本文關(guān)鍵詞 Nginx,timeout,超時,配置,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。