Ngnix很慢

时间:2017-06-26 02:18:46

标签: nginx

我配置了ngnix,但速度非常慢。有时,当我点击重新加载资产时,它才会开始下载。我注意到,在连续几次重新加载页面后,它开始挂起,等待资产并减慢速度。我的配置有问题吗?我将我的应用程序部署到Heroku并在前面使用ngnix。

daemon off;
worker_processes <%= ENV['NGINX_WORKERS'] || 4 %>;

worker_rlimit_nofile 10000;

events {
  # optmized to serve many clients with each thread
    use epoll;

  # if accept_mutex is enabled, worker processes will accept new connections by turn. Otherwise, all worker processes will be notified about new connections, and if volume of new connections is low, some of the worker processes may just waste system resources.
    accept_mutex on;

    multi_accept    on;

    worker_connections 1024;
}

# error logs
error_log   logs/nginx/error.log;
error_log   logs/nginx/error_extreme.log emerg;
error_log   logs/nginx/error_debug.log debug;
error_log   logs/nginx/error_critical.log crit;


http {

  charset   utf-8;
  include mime.types;

  default_type  application/octet-stream;


    log_format l2met 'measure#nginx.service=$request_time request_id=$http_x_request_id';

    access_log logs/nginx/access.log l2met;


    # # - Basic Settings

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay       on;
    types_hash_max_size       2048;


  # # - Enable open file cache

    open_file_cache max=1000 inactive=20s;
    open_file_cache_valid   30s;
    open_file_cache_min_uses    2;
    open_file_cache_errors  on;


    # # - Configure buffer sizes

    client_body_buffer_size 16k;
    client_header_buffer_size   1k;


    # # - Responds with 413 http status ie. request entity too large error if this value exceeds

    client_max_body_size    8m;

    large_client_header_buffers 2 1k;


    # # - Configure Timeouts

    client_body_timeout 12;
    client_header_timeout   12;

    # # - Use a higher keepalive timeout to reduce the need for repeated handshake

    keepalive_timeout   300;

    # # - if the request is not completed within 10 seconds, then abort the connection and send the timeout errror

    send_timeout    10;


    # # - Hide nginx version information

    server_tokens   off;

  # # - Dynamic gzip compression
    gzip                      on;
    gzip_http_version         1.0;
    gzip_disable              "msie6";
    gzip_vary                 on;
    gzip_min_length           20;
    gzip_buffers              4 16k;
    gzip_comp_level           3;
    gzip_proxied              any;


    #Turn on gzip for all content types that should benefit from it.

    gzip_types  application/ecmascript;
    gzip_types  application/javascript;
    gzip_types  application/json;
    gzip_types  application/pdf;
    gzip_types  application/postscript;
    gzip_types  application/x-javascript;
    gzip_types  image/svg+xml;
    gzip_types  text/css;
    gzip_types  text/csv;
    gzip_types  text/javascript;
    gzip_types  text/plain;
    gzip_types  text/xml;

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
     }
   #proxying requests to other servers
     upstream nodebeats {
        server unix:/tmp/nginx.socket max_fails=3 fail_timeout=30s;
        keepalive   32;
     }

     server {
        listen       <%= ENV['PORT'] %>;
        server_name  _;
        root        "/app/";


        location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_http_version    1.1;
      proxy_set_header  Upgrade $http_upgrade;
      proxy_set_header  Connection "upgrade";
      proxy_pass http://nodebeats;
        }

    location ~* \.(js|css|jpg)$ {
      root                  "/app/src/dist";
      add_header            Pragma public;
      add_header            Cache-Control public;
      expires               1y;
      gzip_static           on;
      gzip                  off;
      gzip_http_version     1.0;
      gzip_disable        "msie6";
      gzip_vary             on;
      gzip_min_length       20;
      gzip_proxied          any;
    }
  }
}

修改

确定。我发现了什么设置导致了这个问题。它是 proxy_read_timeout ,默认为60秒。如果我把它放到1秒钟,我可以重新加载任何我想要的页面,它总是快速刷新。但为什么呢?

这应该是nginx等待服务器响应的时间。如果我收到回复并重新加载页面,为什么它会陈旧?是不应该重启超时并再次等待响应?

0 个答案:

没有答案