zoukankan      html  css  js  c++  java
  • nginx的优化

    1. 隐藏nginx服务的header及错误信息里的版本号信息

    http {
          server_tokens off;
     }

    2. 更改nginx默认的用户及用户组

    方法1:

    user nginx;

    nginx这个用户必须 在系统中存在。useradd nginx -s /sbin/nologin –M

    方法2:

    在编辑的时候指定启动用户,这样就不用管配置文件里的了。

    ./configure --user=nginx --group=nginx

    3. nginx worker 进程个数

    worker_processes 8;      #根据cpu核数相等或乘2的进程数
    查看CPU核数的方法:
    grep "physical id"  /proc/cpuinfo

    或者 top 后按1

    4. 根据CPU核数优化nginx进程

    worker_cpu_affinity 0001 0010 0100 1000;

    即把不同的进程分配给不同的CPU处理。 这里的0001 0010 0100 1000是掩码,代表第1、2、3、4颗CPU核心。

    下面是八核服务器的配置:

    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
     或        
    worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000;

    5. 事件处理模型的优化

    events {
            use epoll;
     }

    6. 调整单个进程允许的最大连接数

    events {
            worker_connections 1024;
    }

    7. 优化server name的hash表大小

    http {
           server_names_hash_bucket_size 64;
           server_names_hash_max_size 512;
    }

    8. 开启高效文件传输模式

    sendfile on;    
    tcp_nopush on;

    9. 设置连接的超时时间

    php建议短连接, java建议长连接
    keepalive_timeout 60;  #设置客户端连接保持会话的超时时间。超过这个时间,服务器会关闭该连接
     tcp_nodelay on;       #打开后,在包含了keepalive的参数才生效
    clent_header_timeout 15;  #设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,nginx将返回’Request time out(408)’错误
     client_body_timeout 15;  #设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,nginx将返回‘Request time out (408)’错误
     send_timeout 15;   #指定响应客户端的超时时间,这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,nginx将关闭连接

    10.  上传文件大小限制 (根据实际情况调整)

    client_max_body_size  10m;

    11. fastcgi调优

    #指定连接到后端FastCGI的超时时间
    fastcgi_connect_timeout   60;
    
    #向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送#请求的超时时间
    fastcgi_send_timeout   60;
    
    #指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用一个#64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定#的缓冲区大小
    fastcgi_read_timeout  64k;
    
    #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求, 如果php产生的页#面大小为256k, 那么会为其分配4个64k的缓冲区来缓存;如果大于256KB, 那么大#于的那部分就会缓存到fastcgi_temp指定的路径,但是这样不好,因为硬盘速度比#内存慢很多。一般将该值设为页面的平均值。如果大部分页面为256k, 那么可以#设置为"16 16k""4 64k"
    fastcgi_buffers 4 64k;
    
    #建议为fastcgi_buffers的两倍
    fastcgi_busy_buffers_size  128k;
    
    #这个就是上面提到的, 默认值是fastcgi_buffers的两倍,太小可能会报502
    fastcgi_temp_file_write_size  128k;
    
    #表示开启fastCGI缓存并为其指定一个名称,开启缓存很有用, 可以有效降低cpu#负载,并防止502的发生
    fastcgi_cache   www_nginx;
    
    #用来指定应答代码的缓存 时间,这里是将200和302应答缓存1个小时
    fastcgi_cache_valid  200   302  1h;
    
    #将301应答缓存1天
    fastcgi_cache_valid 301 1d;
    
    #将其它应答缓存1分钟
    fastcgi_cache_valid any   1m;
    
    #缓存 在fastcgi_cache_path指令inactive能数值时间内的最少使用次数
    fastcgi_cache_min_users 1;

    12. nginx压缩功能gzip

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_tupes text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    13. 静态资源的缓存

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ 
    { 
          expires      3650d; 
    }
    
    location ~ .*.(js|css)?$ 
    { 
          expires      30d; 
    }
    
    location ~ ^/(images|javascript|js|css|flash|media|static)/ { 
        expires 360d; 
    }

    14. 根据客户端浏览器类型

    if ($http_user_agent ~* "Firefox|MSIE")  
    {  
        return 403;  
    }

    15. 禁止访问静态目录中的php文件

    location ~ ^/images/.*.(php|php5)$  
            {  
           deny all;  
            }  
    
    location ~ ^/static/.*.(php|php5)$  
            {  
            deny all;  
            }  
    
    location ~* ^/data/(attachment|avatar)/.*.(php|php5)$  
        {  
            deny all;  
        }

    16. 禁止访问管理后台

    location /admin/
     { 
        return 403; 
    }

    17. 限制单IP连接数

    limit_conn_zone $binary_remote_addr zone=addr:10m; 
    server { 
        listen       80; 
        server_name  www.etiantian.org; 
        root   /data0/www/www; 
        index  index.html index.htm; 
        access_log  /app/logs/www_access.log  commonlog; 
        location /download/ { 
            limit_conn addr 1; 
            #limit_rate 20k; 
        }
    }

    18. 限制虚拟主机总数

    limit_conn_zone $binary_remote_addr zone=addr:10m; 
    server { 
        listen       80; 
        server_name  www.etiantian.org; 
        root   /data0/www/www; 
        index  index.html index.htm; 
        access_log  /app/logs/www_access.log  commonlog; 
        location /download/ { 
            limit_conn addr 1; 
            #limit_rate 20k; 
        }
    }

    19. 限制速率

    limit_conn_zone $binary_remote_addr zone=addr:10m; 
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 
     
    server { 
        listen       80; 
        server_name  www.etiantian.org;         root   /data0/www/www; 
        index  index.html index.htm; 
        access_log  /app/logs/www_access.log  commonlog; 
        location /download/ { 
            limit_conn addr 1; 
            limit_req zone=one burst=5; 
    
        } 
    }

    r/s: 请求/每秒, r/m: 请求/分钟

  • 相关阅读:
    react引用antd的form表单
    前端学习之--谷歌浏览器使用
    react引用ant的table组件
    git 提交解决冲突
    git将本地仓库推送到远程仓库
    操作DOM
    javaScript基础篇之数据类型
    css之水平居中设置
    css之颜色值、单位
    CSS属性简写
  • 原文地址:https://www.cnblogs.com/huangxm/p/nginx.html
Copyright © 2011-2022 走看看