###########################################################
# 本配制文件为nginx服务器的配制文件
#  本配制文件修改后,若要使得其生效请运行
#  sudo /data/greentea/nginx/sbin/nginx -s reload
#   !! 修改前请备份一次 !!
###########################################################

#用户
user  greentea;

#工作进程，根据硬件调整，一般等于cpu核数
worker_processes  4;

#错误日志 日志级别
error_log  log/error.log;
#error_log  logs/error.log  debug;
#error_log  logs/error.log  info;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  warn;
#error_log  logs/error.log  error;
#error_log  logs/error.log  crit;

#pid放置的位置
pid        tmp/nginx.pid;

#指定进程可以打开的最大描述符,最好与ulimit -n 的值保持一致
worker_rlimit_nofile 1024;

events {
    #使用epoll的I/O 模型
    #use epoll;

    #工作进程的最大连接数量，根据硬件调整，和前面工作进程配合起来用，尽量大，但是别把cpu跑到100%就行
    #每个进程允许的最多连接数， 理论上每台nginx服务器的最大连接数为worker_processes*worker_connections
    worker_connections  1024;
}


#设定http服务器，利用它的反向代理功能提供负载均衡支持
http {
    #设定mime类型,类型由mime.type文件定义
    include       mime.types;

    default_type  application/octet-stream;

    #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址；
    #$remote_user：用来记录客户端用户名称；
    #$time_local： 用来记录访问时间与时区；
    #$request： 用来记录请求的url与http协议；
    #$status： 用来记录请求状态；成功是200
    #$body_bytes_s ent ：记录发送给客户端文件主体内容大小；
    #$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指令设置了日志格式之后，需要用access_log指令指定日志文件的存放路径；
    access_log  log/access.log  main;

    #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置，getconf PAGESIZE 
    #client_header_buffer_size 4k;

    #如果把它设置为比较大的数值，例如256k，那么，无论使用firefox还是IE浏览器，来提交任意小于256k的图片，都很正常
    #如果注释该指令，使用默认的client_body_buffer_size设置，也就是操作系统页面大小的两倍，8k或者16k，问题就出现了。
    #无论使用firefox4.0还是IE8.0，提交一个比较大，200k左右的图片，都返回500 Internal Server Error错误
    client_body_buffer_size 512k;

    #客户端保持连接超时时间
    keepalive_timeout 60;
    #客户端请求头读取超时时间
    #client_header_timeout 10;
    #客户端请求主体读取超时时间
    #client_body_timeout 10;
    #客户端响应超时时间
    #send_timeout 10;
    
    #sendfile指令指定 nginx 是否调用sendfile 函数（zero copy 方式）来输出文件
    #对于普通应用，必须设为on,如果用来进行下载等应用磁盘IO重负载应用，可设置为off，
    #以平衡磁盘与网络IO处理速度，降低系统uptime
    sendfile        on;
    #此选项允许或禁止使用socke的TCP_CORK的选项，此选项仅在使用sendfile的时候使用
    #tcp_nopush     on;
    #
    #tcp_nodelay on;

    #是否开启gzip数据压缩
    #gzip  on;

    #后端服务器连接的超时时间_发起握手等候响应超时时间
    proxy_connect_timeout 90;
    #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理（也可以说是后端服务器处理请求的时间）
    proxy_read_timeout 180;
    #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
    proxy_send_timeout 180;
    #设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头
    #默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小，不过可以将其设置为更小
    proxy_buffer_size 256k;
    #设置用于读取应答（来自被代理服务器）的缓冲区数目和大小
    #默认情况也为分页大小，根据操作系统的不同可能是4k或者8k
    proxy_buffers 4 256k;
    ##
    #proxy_busy_buffers_size 256k;
    ##设置在写入proxy_temp_path时数据的大小，预防一个工作进程在传递文件时阻塞太长
    #proxy_temp_file_write_size 256k;
    ##proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
    #proxy_temp_path /data0/proxy_temp_dir;
    ##设置内存缓存空间大小为200MB，1天没有被访问的内容自动清除，硬盘缓存空间大小为30GB
    #proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
    #表示使nginx阻止HTTP应答代码为400或者更高的应答
    #proxy_intercept_errors on;

    #这个将为打开文件指定缓存，默认是没有启用的，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;


    #负载均衡组定义
    #down:暂时不参与负载均衡
    #backup:预留的备份机器，只有其它机器挂了才访问  
    #max_fails:允许的请求失败次数  
    #fail_timeout:服务请求失败后，暂停服务时间
    #upstream myservers {
    #   ip_hash;
    #   server 192.168.12.133:80;
    #   server 192.168.12.133:80 down;
    #   server 192.168.12.133:80 max_fails=3 fail_timeout=20ms;
    #}


    #配置虚拟机
    server {
        #配置监听端口
        listen       8086;
        #配置访问域名
        server_name  localhost;
        
        location / {
            proxy_pass http://localhost;
        }

    }

    #配置虚拟机
    server {
        #配置监听端口
        listen       80;
        #配置访问域名
        server_name  localhost;
        #默认首页地址
        #index index.html
        #网页根目录
        #root /data/greentea/work/webpage
        #网页的默认编码格式
        #charset koi8-r;
        #此虚拟主机访问日志存放路径
        #access_log  log/80.access.log  main;

        #error page
        error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        # php脚本文件的根目录
        location ~ \.php$ {
            root           /data/greentea/work/webpage;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # html文件的根目录
        location ~ \.html$ {
            root   /data/greentea/work/webpage;
            access_log off;
            break;
        }

        # js
        location ~ \.(js)$ {
            root /data/greentea/work/js;
            access_log off;
            break;
        }

        # css
        location ~ \.(css)$ {
           root /data/greentea/work/css;
           access_log off;
           break;
        }

        # 图像文件的根目录设置
        location ~ \.(gif|jpg|png|jpeg|tif|bmp)$ {
           root /data/greentea/work/images;
           access_log off;
           expires 1d;
           break;
        }

	    # use for download
	    location ~ ^/(images|static)/ {
            root            /data/greentea/work;
            access_log off;
            expires 1d;
            break;
        }

        #default
        location / {
           root   html;
           index  index.php index.html index.htm;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    
    
#  服务器状态信息监控,需要编译时开启--with-http_stub_status_module模块
#  server
#  {
#    listen  80;
#    server_name  status.localhost;
#
#    location / {
#    stub_status on;
#    access_log   off;
#    }
#  }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}
