nginx.conf

96
zxk175
2017.03.16 09:39* 字数 0
#运行用户
user nginx;

#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#全局错误日志及PID文件
#只记录 critical 级别的错误日志
error_log  logs/error.log crit;
pid        run/nginx.pid;

#工作模式及连接数上限
events {
    #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]
    #epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型
    #Linux建议epoll,FreeBSD建议采用kqueue,window下不指定
    use epoll;

    #单个后台worker process进程的最大并发链接数
    worker_connections  2048;

    #允许尽可能地处理更多的连接数,
    #如果 worker_connections 配置太低,会产生大量的无效连接请求。
    multi_accept on;
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    #隐藏响应header和错误通知中的版本号
    server_tokens off;

    #默认编码
    charset utf-8;

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

    #开启高效文件传输模式,实现内核零拷贝
    sendfile on;

    #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
    #激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,
    #积极的作用是减少网络报文段的数量
    tcp_nopush on;

    #激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能
    tcp_nodelay on;

    #目录列表访问参数,合适http下载,默认关闭
    autoindex off;

    #设定日志Path格式
    #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
    #$remote_user:用来记录客户端用户名称;
    #$time_local: 用来记录访问时间与时区;
    #$request: 用来记录请求的url与http协议;
    #$status: 用来记录请求状态;成功是200,
    #$body_bytes_sent :记录发送给客户端文件主体内容大小;
    #$http_referer:用来记录从那个页面链接访问过来的;
    #$http_user_agent:记录客户浏览器的相关信息;
    #
    #通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,
    #通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,
    #可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址
    log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                        '$status $body_bytes_sent "$http_referer"'
                        '"$http_user_agent" "$http_x_forwarded_for"';
    log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';

    #设定日志Path
    access_log   logs/access.log;
    access_log   logs/access.log  main;
    access_log   logs/access.404.log  log404;

    #保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。
    #参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,
    #使在处理器中加速查找hash表键值成为可能。如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,
    #最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。
    #因此,如果Nginx给出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.
    server_names_hash_bucket_size 128;

    #开启gzip压缩
    gzip  on;

    #设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,
    #表示不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能会越压越大
    gzip_min_length 1k;

    #压缩缓冲区大小。表示申请4个单位为16K的内存作为压缩结果流缓存,
    #默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果
    gzip_buffers    4 16k;

    #压缩比率。用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源
    gzip_comp_level 2;

    #用来指定压缩的类型,“text/html”类型总是会被压缩,这个就是HTTP原理部分讲的媒体类型
    gzip_types    text/plain text/css application/x-javascript;

    #上传文件大小
    client_max_body_size 10M;

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

    #客户请求头缓冲大小。nginx默认会用client_header_buffer_size这个buffer来读取header值,如果
    #header过大,它会使用large_client_header_buffers来读取
    large_client_header_buffers 8 128k;

    #连接超时时间,单位是秒
    keepalive_timeout 30;

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

    #这个是指多长时间检查一次缓存的有效信息
    open_file_cache_valid 80s;

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

    #缓存目录
    proxy_temp_path  /var/cache/nginx/tmp;

    #设置内存缓存空间大小为300MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为20GB
    proxy_cache_path /usr/local/nginx/cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=20g;

    #表示使nginx阻止HTTP应答代码为400或者更高的应答
    proxy_intercept_errors on;

    #后端服务器连接的超时时间_发起握手等候响应超时时间
    proxy_connect_timeout 90;

    #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
    proxy_read_timeout 180;

    #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
    proxy_send_timeout 180;

    #设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长
    proxy_temp_file_write_size 256k;

    #设定负载均衡的服务器列表
    upstream tomcatserver {
        #调度算法,默认是rr轮询。
        #ip_hash;

        #weigth参数表示权值,权值越高被分配到的几率越大
        server localhost:8080;
        #server localhost:8181 weight=1;
    }

    upstream tale {
        server localhost:9000;
    }

    #设定虚拟主机
    include    /zxk175/nginx/nginx/conf/conf/zxk175.conf;
    include    /zxk175/nginx/nginx/conf/conf/weixin.conf;
}
服务器系列
Web note ad 1