• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Nginx timeout超时配置详解

    最近项目中用到了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連接

    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,默认75s

    keepalive_timeout 60;

    so_timeout:

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

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

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

    上一篇:VM VirtualBox 虚拟机挂载共享文件夹
    下一篇:nginx共享内存机制详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Nginx timeout超时配置详解 Nginx,timeout,超时,配置,详解,