系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > server > anz > 详细页面

Nginx timeout超时配置详解

时间:2019-12-21来源:系统城作者:电脑系统城

最近项目中用到了nginx,后台用的是Java, 发现有一个请求后台处理操过了1分钟,结果请求Status Code为504 Gateway Time-out.

理解了下nginx 所有timeout相关的配置,如下:

keepalive_timeout

HTTP 有一个 KeepAlive 模式,它告诉 webserver 在处理完一个请求后保持这个 TCP 连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。

http keep-alive, 網頁的每一個請求都是HTTP (圖片, CSS等), 而打開HTTP 請求是要先建立TCP 連接, 而如果一個頁面每個請求都要打開及關閉一個TCP 連接就會做成資源的浪費. keepalive_timeout 就是當一個HTTP 請求完成, 其TCP 連接會存留下來的時間, 如果這時有另一個HTTP 請求過來, 會複用這個TCP 連接, 如果再沒有新的請求過來, 才會關閉其TCP連接


 
  1. user nginx;
  2. worker_processes 1;
  3.  
  4. error_log /var/log/nginx/error.log warn;
  5. pid /var/run/nginx.pid;
  6.  
  7.  
  8. events {
  9. worker_connections 1024;
  10. }
  11.  
  12.  
  13. http {
  14. include /etc/nginx/mime.types;
  15. default_type application/octet-stream;
  16.  
  17. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  18. '$status $body_bytes_sent "$http_referer" '
  19. '"$http_user_agent" "$http_x_forwarded_for"';
  20.  
  21. access_log /var/log/nginx/access.log main;
  22.  
  23. sendfile on;
  24. tcp_nopush on;
  25. tcp_nodelay on;
  26.  
  27.  
  28. keepalive_timeout 65;
  29. client_max_body_size 8192m;
  30.  
  31. #gzip on;
  32.  
  33. #include /etc/nginx/conf.d/*.conf;
  34.  
  35.  
  36.  
  37. server {
  38. listen 80 so_keepalive=30m::;
  39. listen 443 default ssl;
  40.  
  41. ssl_certificate /etc/nginx/ssl/server.crt;
  42. ssl_certificate_key /etc/nginx/ssl/portalkey.key;
  43. #ssl_password_file /etc/nginx/ssl/ssl.pass;
  44.  
  45.  
  46. ssl_session_timeout 5m;
  47. ssl_protocols SSLv2 SSLv3 TLSv1;
  48. ssl_ciphers HIGH:!aNULL:!MD5;
  49. ssl_prefer_server_ciphers on;
  50.  
  51. location / {
  52. proxy_request_buffering off;
  53. proxy_pass http://127.0.0.1:8011/;
  54. proxy_connect_timeout 180;
  55. proxy_send_timeout 180;
  56. proxy_read_timeout 180;
  57. send_timeout 180;
  58. }
  59. location /test1_url/ {
  60. proxy_pass http://127.0.0.1:8008/;
  61. proxy_connect_timeout 180;
  62. proxy_send_timeout 180;
  63. proxy_read_timeout 180;
  64. send_timeout 180;
  65. }
  66. location /test2_url/ {
  67. proxy_pass http://127.0.0.1:3000/;
  68. proxy_connect_timeout 180;
  69. proxy_send_timeout 180;
  70. proxy_read_timeout 180;
  71. send_timeout 180;
  72. }
  73. }
  74. }

# 配置段: http,默认75s

keepalive_timeout 60;

  • send_timeout :发送数据至客户端超时, 默认60s, 如果连续的60s内客户端没有收到1个字节, 连接关闭
  • proxy_connect_timeout: nginx与upstream server的连接超时时间
  • proxy_read_timeout: nginx接收upstream server数据超时, 默认60s, 如果连续的60s内没有收到1个字节, 连接关闭
  • proxy_send_timeout: nginx发送数据至upstream server超时, 默认60s, 如果连续的60s内没有发送1个字节, 连接关闭

so_timeout:

當用戶跟SERVER開啟了TCP CONNECTION --> 一段長時間這個CONNECTION 沒traffic (so_keepalive timeout) --> SERVER 發出探測包看用戶是否還存在 --> 若探測包沒回, 則關閉TCP CONNECTION 


 
  1. so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]

 
  1. so_keepalive=30m::10
  2. 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 10probes.

以上三个参数只能使用一个,不能同时使用, 比如so_keepalive=on, so_keepalive=off或者so_keepalive=30s::(表示等待30s没有数据报文发送探测报文)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载