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;
}
}
}
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;
}
}
}