nginx配置参数详解 优化

22 篇文章 0 订阅
#定义Nginx运行的用户和用户组


user  www www;


#启动进程,通常设置成cpu*核数的数量相等


worker_processes  8; 


worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;


#为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。


cpu相关信息查看:

    逻辑CPU个数:
          # cat /proc/cpuinfo | grep "processor" | wc -l

     物理CPU个数:
           # cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

     每个物理CPU中Core的个数:
         # cat /proc/cpuinfo | grep "cpu cores" | wc -l


worker_rlimit_nofile 65535;


#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打


#开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀


#,所以最好与ulimit -n的值保持一致


#工作模式及连接数上限

events{  
    use epoll;  
    worker_connections 65535;   
    multi_accept  on; #尽可能多的接受请求 
}

下面为详细说明

use epoll;

#使用epoll的I/O 模型(值得注意的是如果你不知道Nginx该使用哪种轮询方法的话,它会选择一个最适合你操作系统的)

补充说明:

与apache相类,nginx针对不同的操作系统,有不同的事件模型
    A)标准事件模型
    Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
    B)高效事件模型
    Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。
    Epoll:使用于Linux内核2.6版本及以后的系统。
    /dev/poll:使用于Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
    Eventport:使用于Solaris 10. 为了防止出现内核崩溃的问题, 有必要安装安全补丁

查看linux版本号可以使用 cat /proc/version命令

cat /proc/version 

worker_connections 65535;

#工作进程的最大连接数量 理论上每台nginx服务器的最大连接数为worker_processes*worker_connections worker_processes为我们再main中开启的进程数

multi_accept 

告诉nginx收到一个新连接通知后接受尽可能多的连接。


#设定http服务器,利用它的反向代理功能提供负载均衡支持

http {

  #设定mime类型,类型由mime.type文件定义
  include mime.types;
  default_type application/octet-stream;
  server_names_hash_bucket_size 128;

#客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k
#不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。

  client_header_buffer_size 32k;#指定来自客户端请求头的headerbuffer大小
  large_client_header_buffers 4 32k; #指定客户端请求中较大的消息头的缓存最大数量和大小,这里是4个32KB
  client_max_body_size 1024m;   #允许客户端请求的最大单文件字节数  #上传文件大小
  client_body_buffer_size 10m;  #缓冲区代理缓冲用户端请求的最大字节数

   proxy_connect_timeout 120;      #nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_send_timeout 120;         #后端服务器数据回传时间(代理发送超时)
    proxy_read_timeout 120;         #连接成功后,后端服务器响应时间(代理接收超时)
    proxy_buffer_size 4k;          #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    proxy_buffers 4 32k;           #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
    proxy_busy_buffers_size 64k;   #高负荷下缓冲大小(proxy_buffers*2)


 #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用必须设为 on
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.

  sendfile on;

#autoindex  on;  #开启目录列表访问,合适下载服务器,默认关闭。
  tcp_nopush on;  #防止网络阻塞

#keepalive超时时间,客户端到服务器端的连接持续有效时间,当出现对服务器的后,继请求时,keepalive-timeout功能可避免建立或重新建立连接。
  keepalive_timeout 120;
  server_tokens off;
  tcp_nodelay on;#提高数据的实时响应性


 #Gzip Compression   #开启gzip压缩
  gzip on;

#允许压缩的最小字节数
   gzip_min_length 256;
  gzip_buffers 4 16k; #4个单位为16k的内存作为压缩结果流缓存

#压缩级别大小,最大为9,值越小,压缩后比例越小,CPU处理更快。
#值越大,消耗CPU比较高。

  gzip_comp_level 6;
  gzip_http_version 1.1;#设置识别HTTP协议版本,默认是1.1
  gzip_proxied any;
  gzip_vary on;#让前端的缓存服务器混村经过的gzip压缩的页面
  gzip_types #压缩的类型
    text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml

    text/javascript application/javascript application/x-javascript
    text/x-json application/json application/x-web-app-manifest+json
    text/css text/plain text/x-component
    font/opentype application/x-font-ttf application/vnd.ms-fontobject
    image/x-icon;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";

  #If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.

#这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
  open_file_cache max=1000 inactive=20s;

  open_file_cache_valid 30s; #这个是指多长时间检查一次缓存的有效信息。如果有一个文件在inactive时间内一次没被使用,它将被移除

#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如果有一个文件在inactive时间内一次没被使用,它将被移除。
  open_file_cache_min_uses 2;
  open_file_cache_errors on;

#包含其它配置文件,如自定义的虚拟主机
    include  vhosts.conf;
}




#这里为后端服务器wugk应用集群配置,根据后端实际情况修改即可,tdt_wugk为负载均衡名称,可以任意指定


#但必须跟vhosts.conf虚拟主机的pass段一致,否则不能转发后端的请求。weight配置权重,在fail_timeout内检查max_fails次数,失败则剔除均衡。


upstream tdt_wugk {


server   127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;


server   127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;


}


   #虚拟主机配置


server {


#侦听80端口


        listen       80;


        #定义使用www.wuguangke.cn访问


        server_name  www.wuguangke.cn;


        #设定本虚拟主机的访问日志


        access_log  logs/access.log  main;


      root   /data/webapps/wugk;  #定义服务器的默认网站根目录位置


        index index.php index.html index.htm;   #定义首页索引文件的名称


        #默认请求


        location ~ /{


          root   /data/www/wugk;      #定义服务器的默认网站根目录位置


          index index.php index.html index.htm;   #定义首页索引文件的名称


          #以下是一些反向代理的配置.


  proxy_next_upstream http_502 http_504 error timeout invalid_header;


  #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。


          proxy_redirect off;


          #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP


          proxy_set_header Host $host;


          proxy_set_header X-Real-IP $remote_addr;


          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


          proxy_pass  http://tdt_wugk;     #请求转向后端定义的均衡模块


       }


#配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。  #静态文件交给nginx处理


location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$


{


root /data/www/wugk;


#expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力。


expires      30d;


}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你是我的天晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值