Nginx.conf配置说明

#使用的用户和组
user www www;
#指定工作衍生进程数(一般等于CPU的总核数或总核数两倍)
worker_processes  1;
#错误日志的存放目录,日志级别有dubug,info,notice,warn,error,crit
error_log   logs/error.log; 
error_log   logs/error.log info;
error_log   logs/error.log notice;
#指定pid存放路径
/usr/local/nginx/logs/nginx.pid;
#指定文件描述符数量,如果不设的话上限就是系统的ulimit –n的数字,一般设置woker_connections的3-4倍
worker_rlimit_nofile 51200;

events {
    #使用的网络I/O模型,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kqueue模型
    use epoll;
    #允许的连接数    
    worker_connections  1024;
    #默认是on。设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态。
    #设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,知道连接分配完毕,没有取得连接的继续休眠。
    #当你的服务器连接数不多时,开启这个参数会让负载有一定程度的降低。但是当服务器的吞吐量很大时,为了效率,请关闭这个参数。
    multi_accept on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #设置使用字符集
    charset gb2312;
    #保存服务器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制,减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能如果 hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大 hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小
    server_name_hash_bucket_size 128;
    #Nginx在处理请求时,先根据client_header_buffer_size配置的值分配一个buffer,如果分配的buffer无法容纳 request_line/request_header,那么就会再次根据large_client_header_buffers配置的参数分配large_buffer,如果large_buffer还是无法容纳,那么就会返回414(处理request_line)/400(处理request_header)错误;如果你的请求中的header都很大,那么应该使用client_header_buffer_size,这样能减少一次内存分配,如果你的请求中只有少量请求header很大,那么应该使用large_client_header_buffers,因为这样就仅需在处理大header时才会分配更多的空间,从而减少无谓的内存空间浪费
    client_header_buffer_size 32k;
    large_client_header_buffers 2 32K;
    #设置客户端能上传的文件大小
    client_max_body_size 10m;
    #指定是否使用OS的sendfile函数来传输文件,普通应用应该设为on,下载等IO重负荷的应用应该设为off。默认值是off
    sendfile on;
    #sendfile为on时这里也应该设为on,数据包会累积一下再一起传输,可以提高一些传输效率。
    tcp_nopush on;
    #HTTP连接的持续时间。设的太长会使无用的线程变的太多。
    #设成0关闭此功能。
    #默认为75
    keepalive_timeout 75;
    #小的数据包不等待直接传输。默认为on,看上去是和tcp_nopush相反的功能,但是两边都为on时nginx也可以平衡这两个功能的使用
    tcp_nodelay on;
    #FastCGI相关参数超时时间的设置是为了改善网站的性能:减少资源占用,提高访问速度(单位默认是s)
    fastcgi_connect_timeout 300;
    #指nginx进程向fastcgi进程发送request的整个过程的超时时间
    fastcgi_send_timeout 300;
    #指fastcgi进程向nginx进程发送response的整个过程的超时时间
    fastcgi_read_timeout 300;
    #fastcgi_buffers指令指定的缓冲区大小
    fastcgi_buffer_size 64k;
    #fastcgi_buffers指令指定的缓冲区大小
    fastcgi_buffers 16 16k;
    ##建议为fastcgi_buffers的两倍
    fastcgi_busy_buffers_size 128k;
    #在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,设置上述数值设置太小时若负载上来时可能报502 Bad Gateway
    fastcgi_temp_file_write_size 128k;
    #开启FastCGI缓存并且为其制定一个名称,有效降低CPU负载,并且防止502错误
    fastcgi_cache dingtm
    ##指定应答代码缓存时间为1小时
    fastcgi_cache_valid 200 302 1h;
    #1天
  fastcgi_cache_valid 301 1d;
    #1分钟
  fastcgi_cache_valid any 1m;
    #缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数
  fastcgi_cache_min_uses 1;
    #打开GZIP压缩,实时压缩输出数据流
    #gzip on;
    #从Content-Length中数值获取验证,小于1K会越压越大                    
    #gzip_min_length  1k;
    #以16K为单位4倍的申请内存做压缩结果流缓存        
    gzip_buffers  4 16k;        
    gzip_http_version 1.1;
    #压缩比率1-9,1压缩比最小处理速度最快,9压缩比最大但处理最慢且耗CPU
    gzip_comp_level 3; 
    #压缩类型         
    gzip_types text/plain application/x-javascript text/css application/xml;
    #跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
    gzip_vary on;
    #设置Nginx访问日志格式
    # $remote_addr与$http_x_forwarded_for记录客户端IP,$remote_user:记录客户端用户名称,$time_local:访问时间与时区
    # $request:记录请求的URL与http协议,$status:记录请求状态,$body_bytes_sent:记录发送给客户端主体文件的大小
    # $http_referer:记录从哪个页面链接访问过来的,$http_user_agent:记录客户端浏览器相关信息
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #配置虚拟机
    server {
        #默认监听端口
        listen       8090;
        #域名
        server_name  www.swk.com;
        #首页排序
        index index.html index.htm index.php
        #站点根目录,即网站程序存放目录
        root /data/project
        #错误页面
        error_page 500 502 404 /error.html
        #伪静态,将www.swk.com/list...html的文件转发到index.php
        #rewrite ^/list-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /index.php?m=content&c=index&a=lists&catid=$1&types=$2&country=$3&language=$4&age=$5&startDate=$6&typeLetter=$7&type=$8&page=$9 last;
        #location标签,根目录下的.svn目录禁止访问
        location ~ /.svn/{
            deny all;
        }
        location / {
            root   html;
            index  index.html index.htm;
        }

        #将符合js/css的文件等设定expires缓存参数要求浏览器缓存
        location~ .*\.(js|css)?${
            expires 30d;
        }

        location ~ ^/list{
            #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_cache cache_one;
            #对不同的http状态码设置不同的缓存时间
            proxy_cache_valid 200 301 302 304 1d;
            #proxy_cache_valid any 1d;
            #以域名、URI、参数组合成web缓存的key,Nginx根据key哈希,存储缓存内容到二级缓存目录
            proxy_cache_key $host$uri$is_args$args;
            proxy_set_header Host $host;
            proxy_set_header x-Forwarded-For $remote_addr;
            proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
            #proxy_ignore_headers Set-Cookie;
            #proxy_hide_header Set-Cookie;
            proxy_pass http://backend_server;
            add_header Nginx-Cache "$upstream_cache_status from km";
            expires      1d;
        }
        access_log  /data/logs/swk.com.log access;    #nginx访问日志
    }

    upstream bakend{
        server 127.0.0.1:8027;
        server 127.0.0.1:8028;
        server 127.0.0.1:8029;
        hash $request_uri;
    }
    #支持的负载均衡策略
    #1、轮询(默认)
    #每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    #2、Weight
    #指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    #upstream bakend {
    #   server 192.168.0.14 weight=10;
    #   server 192.168.0.15 weight=10;
    #}
    #3、ip_hash
    #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    #upstream bakend {
    #   ip_hash;
    #   server 192.168.0.14:88;
    #   server 192.168.0.15:80;
    #}
    #4、fair(第三方)
    #按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    #upstream backend {
    #   server server1;
    #   server server2;
    #   fair;
    #}
    #5、url_hash(第三方)
    #按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
    #例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
    #upstream backend {
    #   server squid1:3128;
    #   server squid2:3128;
    #   hash $request_uri;
    #   hash_method crc32;
    #}
    #upstream bakend{#定义负载均衡设备的Ip及设备状态}{
    #   ip_hash;
    #   server 127.0.0.1:9090 down;
    #   server 127.0.0.1:8080 weight=2;
    #   server 127.0.0.1:6060;
    #   server 127.0.0.1:7070 backup;
    #}
    #每个设备的状态设置为:
    #1.down表示单前的server暂时不参与负载
    #2.weight为weight越大,负载的权重就越大。
    #3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
    #4.fail_timeout:max_fails次失败后,暂停的时间。
    #5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
}

猜你喜欢

转载自blog.csdn.net/fuyuwei2015/article/details/78351937