4、 负载均衡配置
下面设定负载均衡的服务器列表
upstream ixdba.net{
ip_hash;
server 192.168.12.133:80;
server 192.168.12.134:80 down;
server 192.168.12.135:8009 max_fails=3 fail_timeout=20s;
server 192.168.12.136:8080;
}
upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面的设定汇总,通过upstream指令之内搞定了一个负载均衡器的名称ixdba.net。这个名字可以任意指定,在后面需要的地方直接调用即可。
Nginx的负载均衡模块目前支持4种调度算法,下面进行分别介绍,其中后两项属于第三方的调度方法。
□轮训(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动踢出,使用户访问不受影响。
□Weight。指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
□ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态页面存在的session共享问题。
□fair。比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短暂地进行负载均衡,也就是根据后端服务器的相应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstrea_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_timeout一起使用。
注意: 当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。
5、 server虚拟主机配置
虚拟主机的配置。建议将对虚拟主机进行配置的内容写进另外一个文件,然后通过include指令包含进来,这样更便于维护和管理。
server{
listen 80;
server_name 192.168.12.188 www.ixdba.net;
index index.html index.htm index.jsp;
root /web/wwwroot/www.ixdba.net
charset gb2312;
}
server标志定义虚拟主机开始。
listen用于指定虚拟主机的服务端口。
server_name用来指定IP地址或者域名,多个域名之间用空格分开。
Index用于设定访问的默认首页地址。
root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路
径。
access_log logs/www.ixdba.net.access.log main;
access_log用来指定次虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。
6、 URL匹配配置
URL地址配置是进行Nginx配置的最灵活部分。location支持正则表达式匹配,也支持
条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。
以下这段设置是通过location指令来网页URL进行分析处理,所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给nginx处理,而expires用来指定静态文件的过期时间,这里是30天。
location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$ {
root /web/wwwroot/www.ixdba.net;
expires 30d;
}
以下这段设置是upload和html下的所有文件都交给nginx来处理,当然,upload和html
目录包含在/web/wwwroot/www.ixdba.net目录中。
location ~^/(upload|html)/ {
root /web/wwwroot/www.ixdba.net;
expires 30d;
}
在最后这段设置中,location是对此虚拟主机下动态网页的过滤处理,也就是将所有以.jsp为后缀的文件都交给本机的8080端口处理。
location !.*jsp$ {
index index.jsp;
proxy_pass http://localhost:8080;
}
7、 StubStatus模块配置
StubStatus模块能够读取Nginx自上次启动以来的工作状态,此模块非核心模块,需要
在Nginx编译安装时手动置顶才能使用此功能。
location /NginxStatus {
stub_status on;
access_log logs/NginxStatus.log;
auth_basic “NginxStatus”;
auth_basic_user_file ../htpasswd;
}
stub_status设置为“on”表示启动StubStatus的工作状态统计功能。access_log用来指定StubStatus模块的访问日志文件。auth_basic是Nginx的一种认证机制。auth_basic_user_file用来指定认证的密码文件,由于Nginx的auth_basic认证采用的是与Apache兼容的密码文件,因此需要用Apache的htpasswd命令来生成密码文件,例如要添加一个webadmin用户,
可以使用下面方式生成密码文件:
/usr/local/apache/bin/htpasswd –c /opt/nginx/conf/htpasswd webadmin
会得到以下提示信息:
New password:
输入密码之后,系统会要求再次输入密码。确认之后添加用户成功。
要查看Nginx的运行状态,可以输入http://ip/NginxStatus,然后输入刚刚创建的用户名和密码就可以看到如下信息:
Active connections: 1
server accepts handles requests
393411 393411 393799
Reading:0 Writing:1 Waiting:0
Active connections 表示当前活跃的连接数,第三行的三个数字表示 Nginx 当前总共处理了 393411 个连接, 成功创建 393411 次握手, 总共处理了 393799 个请求。最后一行的Reading 表示 Nginx 读取到客户端 Header 信息数, Writing 表示 Nginx 返回给客户端的 Header信息数,“Waiting”表示 Nginx 已经处理完,正在等候下一次请求指令时的驻留连接数。
在最后这段设置中, 设置了虚拟主机的错误信息返回页面, 通过 error_page 指令可以定制各种错误信息的返回页面。在默认情况下,Nginx 会在主目录的 html 目录中查找指定的返回页面,特别需要注意的是,这些错误信息的返回页面大小一定要超过 512K,否者会被ie 浏览器替换为 ie 默认的错误页面。
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
|