worker_processes  4;                                           # 根据核数选择

worker_cpu_affinity   0001 0010 0100 1000;                     # 绑定nginx worker进程到不同的cpu

worker_rlimit_nofile    65535;                                 # 每个worker进程打开最大打开文件数(受系统限制,不得超过ulimit -HSn限制值)

user nginx;                             # 更改nginx默认用户  默认nobody

events {

    use epoll;                                                 # 使用epoll的I/O多路复用模型,高性能高并发设置

    worker_connections  1024;                   # 每个worker单个进程允许客户端最大的连接数

}

http {

    include       mime.types;                                  # nginx 支持的媒体类型

    default_type  application/octet-stream;                    # 默认的媒体类型

    sendfile        on;                       # 开启高速传输模式,同时打开了tcp_nopush和tcp_nodelay,防止网络及磁盘I/O阻塞

    tcp_nopush      on;                                        # 减少网络报文段的数量

    tcp_nodelay     on;                       # 提高I/0性能,等待字节组成一个数据包才发送,对于发送字节较少的业务,等待时间较长

    client_header_timeout  15;                   # 读取客户端请求头部数据的超时时间,防止客户端利用http协议攻击,经验参考值15

    client_body_timeout   15;                           # 读取客户端请求主体的超时时间,为两次成功的读取操作之间的一个超时,默认为60

    send_timeout  15;                           # 响应客户端的超时时间,为两个连接活动之间的时间,超过时间,客户端无活动,则关闭连接,默认60,可改为参考值25

    keepalive_timeout  65;                                     # 连接超时

    server_names_hash_max_size  32;                            # 设置存放域名的最大的散列列表的大小,默认512

    server_names_hash_bucket_size  64;                         # 设置存放域名的最大散列的列表的存储桶大小  32|64|128   

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';    #日志格式

    server_tokens    off;                                      # 隐藏软件版本

    #fastcgi参数

    fastcgi_connect_timeout    240;                            # nginx与后端fastcgi服务器连接超时时间,默认60,通常不要超过75.

    fastcgi_send_timeout    240;                               # nginx允许fastcgi服务器段返回数据的超时时间,在规定时间内后端必须传完所有数据,否则断开.默认60秒

    fastcgi_read_timeout    240;                               # nginx从fastcgi服务器读取响应信息的超时时间,表示建立连接后,nginx等待后端服务器的响应时间

    fastcgi_buffer_size     64k;                               # nginx fastcgi 的缓冲区大小,默认情况,这个参数大小由fastcgi_buffers指定的一个缓冲区的大小

    fastcgi_buffers      4  64k;                               # 设定用来读取从fastcgi服务器端收到的响应信息的缓冲区大小和缓冲区的数量,默认 8 4k|8k

    fastcgi_busy_buffers_size   128k;                          # 用于设置系统很忙时可以使用的fastcgi buffers大小,官方推荐fastcgi_buffers *2 ,默认 8k|16k

    fastcgi_temp_file_write_size   128k;                       # fastcgi零时文件的大小,可设置128~256k

    #fastcgi_temp_path   /data/ngx_fcgi_tmp;                   # fastcgi零时文件的目录

    fastcgi_cache_path   /data/ngx_fcgi_cache  levels=2:2  \

    keys_zone=ngx_fcgi cache:512m  inactive=1d max_size=40g;

                                    # fastcgi缓存目录   2:2会生成256*256个子目录  keys_zone缓存空间名称  cache用多少内存  inactive默认失效时间  max_size表示最多用多少硬盘空间

    gzip on;                                                   # 开启压缩

    gzip_min_length   1k;                                      # 允许压缩的页面最小字节数

    gzip_buffers     4 16k;                                    # 压缩缓冲区大小,表示申请4个16k的内存作为压缩结果流缓存

    gzip_http_version  1.1;                                    # 压缩版本,用于设置识别http协议版本

    gzip_comp_level     9;                                     # 压缩比   1-9

    gzip_types   text/css  text/xml  application/javascript;   # 指定压缩类型

    gzip_vary  on;                                             # 让前端的缓存服务器缓存经过gzip压缩页面

    server  {

        listen  80  default_server;

        server_name _;

        return  501;                                           # 使用ip访问网站的用户,收到501

}

    server {

        listen       80;                                       # 提供服务的端口

        server_name  localhost;                                # 提供服务的域名主机名

        location / {                                           

            root   html;                                       # 站点根目录

            index  index.php index.html index.htm;             # 默认首页文件

            if ($request_method !~ ^(GET|HEAD|POST)$) {

           return 501;                                         # 限制http请求方式

}

            if ($request_user_agent ~* LWP::Simple | BBBike | wget) {

           return 403;                                         #限制下载协议代理

}

        }

         location ~ ^/admin/.*\.(php|php5|sh|pl|py)$           #  安全设置,admin目录下的脚本文件拒绝访问

          {

          allow 192.168.1.1;

          deny all;

 }

         location ~* \.(sql|doc|txt|pdf)$  {

         if (-f $request_filename) {

          root  /data/www;                                      # 安全设置,请求文件重定向到别的url

          rewrite ^/(.*)  http://www.error.html/$i   break;

}

}

        location ~* \.(txt|doc|pdf|sql)$   {

         root   /data/www;

         deny   all;

}

        location /upload/  { return 404;} 

        

        localtion ~ .*\.(php|php5)?$

        {

         fastcgi_pass 127.0.0.1:9000;

         fastcgi_index index.php;        

         include  fastcgi.conf;                                

         fastcgi_cache   ngx_fastcgi_cache;                     # 开启fastcgi缓存并为其指定一个名称,开启缓存有效降低cpu负载

         fastcgi_cache_valid  200 302 1h;                       # 将200 302缓存应答1小时

         fastcgi_cache_valid  301 1d;                           # 将301应答缓存1天

         fastcgi_cache_valid  any 1m;                           # 其它应答缓存设置1分

         fastcgi_cache_min_users 1;                             # 设置请求几次之后响应将被缓存,1表示一次

         fastcgi_cache_use_stale error timeout invalid_header http_500;   定义哪些情况下使用过期缓存

         fastcgi_cache_key  http://$host$request_uri;           # 定义fastcgi_cache的key,以请求的作为缓存的key,nginx会取这个key的md5作为缓存文件

          

}

         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

          {

          expires       365d;

}

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}