Nginx性能调优

user www;
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
upstream app{
	server 127.0.0.1:3001;				
}
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
    client_max_body_size 100M;
        #access_log  logs/host.access.log  main;
        location / {
            root   /home/www/music/p;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
			
	location ^~/app/{
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_set_header X-NginX-Proxy true;
		proxy_pass http://app/;
		proxy_redirect off;	
		add_header Access-Control-Allow-Origin "*";	
	}
		
}
}

nginx 主要用于做一个nodejs与静态文件的负载均衡和静动态数据与文件的分发。

服务是购买的阿里云最便宜的服务器。先优化服务器端:

系统:CentOS release 6.5 (Final)

CPU信息:

processor : 0

vendor_id : GenuineIntel

cpu family : 6

model : 45

model name : Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz

stepping : 7

cpu MHz : 2199.939

cache size : 15360 KB

physical id : 0

siblings : 1

core id : 0

cpu cores : 1

apicid : 0

initial apicid : 0

fpu : yes

fpu_exception : yes

cpuid level : 13

wp : yes

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush mmx fxsr sse sse2 ht syscall nx lm up rep_good unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm

bogomips : 4399.87

clflush size : 64

cache_alignment : 64

address sizes : 46 bits physical, 48 bits virtual

power management:

内存:512MB

             total       used       free     shared    buffers     cached

Mem:    490        469         21          0        139        146

-/+ buffers/cache:        183        307

所剩内存并不多。21MB

nginx:

worker_processes  1; #这里是默认的为1,可以改为auto,这样如果你的服务器是多核的可以需要多少自动用多少。这里因为只有1核,所以不用修改.

在这条下面添加一条:worker_rlimit_nofile 100000;#这个是现在nginx同时打开的文件数,如果你不设置就是根据系统的默认值(ulimit -a查看)。如果nginx打开的文件超过了系统的默认值就会报too many open file.

然后就是Events模块

events {
    worker_connections  1024;
}

上面是默认的,这里先修改worker_connections参数,这个是nginx的worker进程可以打开的最大进程数,因为我的目前的服务器配置很低,所以就设置为1024。因为我work连接数由系统的socket连接数限制,我再如何的提高也是没有效果的。如果你的服务器配置比较高可以修改为2048,4096,8192成2的倍数增加最好。

然后添加两条:

multi_accept  on;#这里默认是off,这个参数是告诉nginx在接收到连接的时候是否接受更多的连接

use epoll; #如果是*BSD系列就是use kqueue 如果是其他kernel>2.6就使用epoll

如果不理解epoll和kqueue:epoll 或者 kqueue 的原理是什么?

然后是HTTP模块:

 server_tokens off; #这个参数是关闭nginx的版本信息,因为各个版本有不同的安全漏洞,那么我们关闭版本,当入侵者攻击时需要做模糊攻击提高对方攻击应用的复杂度
 sendfile        on; #这个参数是将文件读入到缓存区
  tcp_nopush     on; #告诉nginx在发送数据包的时候一次性把所有文件包含到一个数据包中,不需要一个一个的发送

gzip on; #开启gzip压缩节省带宽
gzip_disable "msie6"; #兼容低版本的浏览器
gzip_proxied any;  #允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求。
gzip_min_length 1000; #当文件小于1000b的时候不压缩
gzip_comp_level 5;#这个是压缩级别,共有1-9,9压缩率最高,但是最慢。1则相反.这里我们折中5
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  #设置被压缩文件的格式

最终版本:

user www;
worker_processes  auto;
worker_rlimit_nofile 100000;

events {
    worker_connections  1024;
    multi_accept on;
    use epoll;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    server_tokens off;
    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;
gzip on; 
gzip_disable "msie6"; 
gzip_proxied any; 
gzip_min_length 1000; 
gzip_comp_level 4; 
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 
		

	upstream app{
				server 127.0.0.1:3001;
				
	}

    server {
        listen       80;
        server_name  localhost;
       #charset koi8-r;

    client_max_body_size 100M;
        location / {
            root   /home/www/music/p;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
		
		
	location ^~/app/{
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_set_header X-NginX-Proxy true;
		proxy_pass http://app/;
		proxy_redirect off;	
		add_header Access-Control-Allow-Origin "*";	
	}
		
}

}

扩展阅读:

高并发下的 Nginx 优化 


你可能感兴趣的:(Nginx性能调优)