nginx配置性能优化welly版

来源:互联网 发布:空间谱估计理论与算法 编辑:程序博客网 时间:2024/05/21 08:51

此文档是个人对nginx配置优化之总结,方便后续用到时查阅。

worker_processes 8

nginx要开启的进程数,建议按照cpu的核数分配,一般为它的倍数。

worker_rlimit_nofile 102400

指定文件描述符数量。指一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除。但nginx分配请求并不是那么均匀,所以与ulimit -n的值保持一致即可。####events{
multi_accept on; 
告诉nginx收到一个新连接通知后接受尽可能多的连接,默认off。
use epoll;
使用网络I/O模型,Linux推荐使用epoll。
worker_connections 102400;每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。####}#####http
client_header_buffer_size 4k客户端请求头部的缓冲区大小,这个可以根据系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。large_client_header_buffers 4 4k
open_file_cache max=102400 inactive=20s这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s多长时间检查一次缓存的有效信息。
open_file_cache_min_uses 1;open_file_cache_errors on|off;是否缓存在文件缓存中,缓存打开文件时出现找不到路径,没有权限等的错误信息。client_max_body_size 300m;

设定通过nginx上传文件的大小。

server_names_hash_bucket_size 32|64|128;

如果nginx配置了一个超长的域名后,ngnix -t 检查配置文件时出现如下错误:

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 128 

server_names_hash_max_size 512;

如果定义了大量servername,得到如下错误:

could not build the server_names_hash,you should increase either server_names_hash_max_size: 512or server_names_hash_bucket_size: 128

根据实际情况设定server_names_hash_max_sizeserver_names_hash_bucket_size

sendfile on;

开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on。

如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。

autoindex on;

开启目录列表访问,合适下载服务器,默认关闭。

tcp_nopush on;

防止网络阻塞

tcp_nodelay on;

防止网络阻塞

keepalive_timeout 60;

长连接超时时间,单位是秒

client_header_timeout 10;

client_body_timeout 10;#client_header_timeout 和client_body_timeout 设置请求头和请求体(各自)的超时时间。reset_timedout_connection on; 告诉nginx关闭不响应的客户端连接。这将会释放那个客户端所占有的内存空
send_timeout 10; 指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,nginx就会关闭连接。

fastcgi_connect_timeout 300;

指定连接到后端FastCGI的超时时间

fastcgi_send_timeout 300;

向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。

fastcgi_read_timeout 300;

接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。

fastcgi_buffer_size 64k;

指定读取FastCGI应答第一部分需要用多大的缓冲区。一般client_header_buffer_size

fastcgi_buffers 4 64k;

定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求,

fastcgi_busy_buffers_size 128k;

默认值是fastcgi_buffers的两倍

fastcgi_temp_file_write_size 128k;

在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。

gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小

gzip_buffers 4 16k; #压缩缓冲区

gzip_http_version 1.1; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)

gzip_comp_level 2; #压缩等级,其值从1到9,1为最小化压缩(处理速度快),9为最大化压缩(处理速度慢)。

gzip_types text/plain application/x-javascript text/css application/xml;

压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。

gzip_disable “MSIE [1-6].(?!.*SV1)”;
使用正则表达式来指定某些不需要gzip压缩的浏览器(将和User-Agents进行匹配)。依赖于PCRE库。在0.6.23版本中首次使用。
0.7.63版本以后,你可以为IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩。

gzip_vary on;

启用应答头“Vary: Accept-Encoding”,注意,由于一个bug将导致IE 4-6无法缓存内容,默认off。

#####}

######server{

location ~ ^(.+\.php)(.*)$ {
        set $script    $uri;
        set $path_info  "/";
        if ($uri ~ "^(.+\.php)(/.+)") {
            set $script     $1;
                set $path_info  $2;
        }
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index  index.php?IF_REWRITE=1;
        include fastcgi_params;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param SCRIPT_FILENAME  $document_root/$script;
        fastcgi_param SCRIPT_NAME $script;
 }

指定浏览器图片缓存时间设置

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${ expires 10d;}

#JS和CSS缓存时间设置location ~ .*\.(js|css)?${ expires 1h;}

location ~ /\.ht {
  deny all;
}

######}

0 0
原创粉丝点击