user:指定nginx worker进程的用户以及用户组;
work_processes:是个主模块指令,制定了nginx要开启的进程数。每个nginx进程平均耗费10M-12M内存;根据经验一般设定一个进程足够了;如果是多核cpu;建议指定和cpu数量一样多的进程数;
error_log:是个主模块指令,用来定义全局错误日志文件;日志输出级别有debug、info、notice、crit可供选择;其中debug输出最为详细,而crit输出日志最少;
pid是主模块指令,用来指定进程id的存储文件位置;
worker_rlimit_nofile:用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535;需要使用命令“ulimit -n 65535"来设置;
events指令用来设定nginx的工作模式及连接数上限;
use是事件模块指令;用来指定nginx的工作模式。nginx支持的工作模式有select、poll、kqueue/epool/rtsig和/dev/poll.对于linux操作系统而言,epoll工作模式是首选;
work_connections也是个事件模块指令,用于定义nginx每个进程的最大连接数;默认是1024;最大客户端连接数由worker_processes和worker_connections决定;
注意:进程的最大连接数受linux系统进程的最大打开文件数限制,在执行操作系统命令:"ulimit -n 65535"后worker_connections的设置才生效;

http服务器配置:
include:是个主模块命令,实现对配置文件所包含文件的设定,可以减少主配置文件的复杂度;
default_type:属于http核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式;
log_format:是nginx的httplog模块指令,用于指定nginx日志的输出格式。main为此日志输出格式的名称;可以在下面的access_log指令中使用;
client_max_body_size:用来设置允许客户端请求的最大单个文件字节数;
client_header_buffer_size:用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1KB的缓冲区大小已经足够;
keepalived_timeout:用于设定客户端连接保持活动的超时时间;
client_header_timeout:用于设置客户端连接保持活动的超时时间;如果超过这个时间,客户端还没有发送任何数据;nginx将返回”request_time_out 408"的错误;
client_body_timeout:用于设置客户端请求主体读取时间,默认值为60.如果超过这个时间,客户端还没有发送任何数据,nginx将返回"request time out(408)"错误;

查看nginx是否安装了某个模块,可以使用如下命令:nginx -V进行查看;

HttpGzip模块配置
下面配置http的gzip模块,这个模块支持在线实时压缩输出数据流。要查看是否安装了此模块,请使用上面的命令;

参数说明:
          gzip:用于设置开启或者关闭gzip模块;“gzip on”表示开启gzip压缩,实时压缩输出数据流;
          gzip_min_length :用于设置允许压缩的页面最小字节数,页面字节数从header头的content_length中获取;默认值是0;不管页面多大都进行压缩;建议设置成大于1k的字节数,小于1k的可能会越压越大;
         gzip_buffers 4  16k
         gzip_buffers:表示申请4个单位为16k的内存作为压缩结果流缓存;默认值是申请与原始数据大小相同的内存空间来存储gzip的压缩结果;
         gzip_http_version:用于设置识别http协议版本,默认为1.1;
         gzip_comp_level:用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但是处理速度慢,也比较消耗cpu资源;
         gzip_types用来指定压缩的类型,无论是否指定,“text/html"类型总是会被压缩的;
         gzip_vary:选项可以让前端的缓存服务器缓存经过gzip压缩的页面,例如,用squid经过nginx压缩的数据;

负载均衡配置:
 

upstream  zylw{ 

                    ip_hash; 

                   server  192.168.10.11:8080; 

                   server  192.168.10.12:8080; 

                   }


           upstream是nginx的upstream模块;这个模块通过简单的调度算法来实现客户端ip到后端服务器的负载均衡。
           nginx的负载均衡模块目前支持4种调度算法,下面进行分别介绍:
                            轮训调度算法:默认的调度算法。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器死机,故障系统自动剔除,使用户访问不受影响;
                            weight:weight值越大,分配到的访问几率越高;
                            ip_hash:每个请求按照ip的hash结果分配;
                            fair:这是比上面两个更加智能的负载均衡算法。此种算法可以根据页面大小和加载时间长短智能地进行负载均衡;也就是根据后端服务器的响应时间来分配请求;响应时间段的优先分配;nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载nginx的upstream_fair模块。
                            url_hash:此方法按访问url的hash结果进行分配请求,使每个url指向到同一个后端服务器;可以进一步提高后端缓存服务器的效率。nginx本身是不支持url_hash的,需要安装nginx的hash软件包。
          在http upstream模块中,可以通过server指令指定后端服务器的ip地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常见的状态有:
                      down:表示当前的server暂时不参与负载均衡;
                      backup:预留的服务器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻;
                      max_fails:允许请求失败的次数,默认是1,当超过最大数时,返回proxy_next_upstream模块定义的错误;
                     fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_time一起使用;


server虚拟主机的配置:
           下面介绍对虚拟主机的配置:建议将对虚拟主机的配置的内容写到另外一个文件中,然后通过include指令包含进来;
   

server  { 

                  listen  80; 

                  server_name       192.168.10.13  www.itpub.com; 

                  index   index.html  index.htm  index.jsp; 

                  root   /home/xbniao/webapps 

                  charset  gb2312; 

                access_log  logs/www.xbniao.com.access.log  main; 

           }


           server标志定义虚拟主机的开始;listen用于指定虚拟主机的服务器断开;server_name用于指定ip地址或者域名;多个域名之间使用空格分开;index用于设定访问的默认首页地址;root指令用于指定虚拟主机的网页根目录;这个目录可以是相对路径,也可以是绝对路径;charset用于设置网页的默认编码格式;
          access_log   logs/www.xbniao.com.access.log  main;
          access_log     用来指定此虚拟主机的访问日志存放路径,后面的main用于指定访问日志的输出格式;

URL匹配配置:
          url地址匹配是nginx配置中最灵活的部分。location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现nginx对动、静态网页的过滤处理;
          所有扩展名为.gif/jpg/png/bmp/swf的静态文件交给nginx处理,而expires用来指定静态文件的过期时间,这里是30天;
   

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

                       root   /home/xbniao/xbniao.com; 

                       expires  30d; 

             }


        以下这段是将upload和html下的所有文件交给nginx来处理,当然upload和html目录包含在/home/xbniao/xbniao.com的目录下;
     

location   ~ ^/(upload|html)/ { 

                       root  /home/xbniao/xbniao.com; 

                       expires   30d; 

              }


         在最后这段设置中,location是对此虚拟主机下动态网页的过滤处理,也就是将所有以.jsp为后缀的文件都交给本机的8080端口处理;
   

location  ~  .*.jsp  { 

                      index   index.jsp; 

                      proxy_pass  http://localhost:8080; 

                    }


        在最后的最后,设置虚拟主机的错误信息返回页面,通过error_page指令可以定制各种错误信息的返回页面。在默认情况下,nginx会在主目录的html目录中查找指定的返回页面。特别需要注意的是,这些错误信息的返回页面大小一定不要超过512kb;否则会被ie浏览器替换为ie默认的错误页面;
       

error_page     404         /404.html; 

         error_page     500 502   503  504  /50x.html; 

        location  =  /50x.html  { 

                     root  html; 

                     } 

     } 

}