nginx 主配置文件在安装目录下的conf中,名字为nginx.conf:
主配置文件主要分为4部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和location(URL匹配特定位置的设置);四者关系如下:server继承main,location继承server,upstream既不继承其他设置也不被其他设置所继承.
1、Nginx的全局配置
user mersap mersap; #user是个主模块指令,指定进程运行的用户以及组,默认是有nobody运行
worker_processes 4; #worker_processes,指定nginx开启的进程数。通常开启一个进程以及足够,若是多核cpu,指定和cpu的数量一样多的进程数。
error_log logs/error.log notice; #定义全局错误日志文件。日志输出级别有debug 、info、notice、warn、error、crit可以选择,debug输出的日志最为详细,而crit输出日志最少。
pid logs/nginx.pid ; #指定进程id的存储文件位置
worker_rlimit_nofile 65535; #worker_rlimit_nofile用于指定一个nginx进程可以打开的最多文件描述符数目,需要使用ulimit -n 65535 来设置;
events{ #设定nginx的工作模式及连接数上限;
use epoll; #事件模块指令,指定nginx的工作模式。Nginx支持的工作模式有:select、poll、kqueue、epoll等。其中select、poll都是标准工作模式;kqueue(BSD)、epoll是高效的工作模式;linux中epoll是首选;
worker_connections 65536; #worker_connections定义每个进程的最大连接数,默认是1024;最大客户端连接数由进程数和最大连接数决定,最大客户端连接数=进程数*最大连接数;在做反向代理时,最大客户端连接数=进程数*最大连接数/4
###进程的最大连接数受进程的最大打开文件数限制,在执行ulimit -n 65535 后进程最大连接数才能生效;
}
2、Http服务器配置
http {
include mime.types; #配置文件锁包含的文件设定
default_type application/octet-stream; #核心模块指令,设定默认类型为二进制流;
client_max_body_size 8m; #设置允许客户端请求的最大的单个文件字节数
client_header_buffer_size 32k; #缓冲区,客户端请求头的缓冲大小??
large_client_header_buffers 4 32k; #指定客户端中请求中较大的消息头的缓存最大数量和大小,最大缓存为4个32k
sendfile on; #用于开启高效文件传输模式,将下面俩个参数打开,防止网络阻塞
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65; #用于设置客户端连接保持活动的超时时间;当超过这个时间后服务器自动关闭
client_header_timeout 10; #用于设置客户端请求头读取超时时间
client_body_timeout 10; #设置客户端请求主体读取超时时间;
send_timeout 10; #指定响应客户端的超时时间。
3、httpgzip模块配置: 支持在线实时压缩输出数据流。
看是否安装此模块: nginx -V
若没有安装。需要添加此模块: 进入nginx源码目录,重新编译代码和模块,./configure + 需要的模块 ,make ,但是不要makeinstall,否则就覆盖安装了。 Make以后,在objs下面就会产生新的nginx,这个就是新的版本的程序。备份旧的Nginx cp /usr/local/nginx/sbin/nginx /usr/loacl/nginx/nginx.bak ; 然后把最新的程序复制过来,cp objs/nginx /usr/local/nginx/sbin/nginx
测试新的nginx程序是否正确
/usr/local/nginx/sbin/nginx -t
平滑重启nginx
/usr/local/nginx/sbin/nginx -s reload
当HttpGzip安装完成后
设置: gzip on;(通常只需要设置这一个,具体自己看)
4、负载均衡配置
upstream ixdba.net{
ip_hash; 调度算法(共四种,自己研究)
server 10.43.6.12:80;
server 10.43.6.11:80 down;
server 10.43.6.13:8009 max_fail=3 file_timeout=20s;
server 10.43.6.14:8089 ;
}
通过upstream指令指定一个负载均衡器的名称为ixdba.net,名称可以随意指定,在后面需要用的地方直接调用即可
在此模块中,可以通过server指令指定后端服务器的IP地址和端口,同时也可以设定每个后端服务器在负载均衡调度中的状态。常用状态有:
(1)down 表示当前server暂时不参与负载均衡
(2)backup 预留的备份机器。当其他的所有的非backup机器出现故障时或者忙碌的时候,才会请求此机器
(3)max_fails 允许请求失败的次数,默认为1;当超出最大次数时,返回错误
(4)fail_timeout 经历lmax_fails次失败后,暂停服务时间;
5、server虚拟主机配置
server{
listen 80;
server_name 192.178.2.3 www.ixdba.net;
index index.html index.htm index.jsp;
root /web/*****;
charset gb2312;
access_log logs/***.log main;
}
6、URL匹配配置
URL地址匹配时Nginx中最灵活的部分。Location支持正则表达式匹配,也支持条件判断。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
root /wet/***;
expires 30d;
}
通过location指令来对网友url进行分析处理,所有扩展名为gif、jpg等文件都交给nginx处理,而expires用来指定静态文件的过期时间,这里设置为30天