Nginx系列(十三 nginx负载均衡)
# 负载均衡upstream webserver {
server192.168.27.134:8080;
server192.168.27.135:80;
server192.168.27.136:80;
}
# 反向代理server {
listen80;
server_name www.test01.com;
location / {
proxy_passhttp://webserver;
proxy_redirectoff;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# web服务器server {
listen8080;
server_name www.test01.com;
access_log logs/host.access.log main;
location / {
root /web/www/thinkphp;
index index.php index.html index.htm;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1last;
}
}
location~ [^/]\.php(/|$) {
root /web/www/thinkphp;
fastcgi_index index.php;
fastcgi_pass127.0.0.1:9000;
include fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}
}
二. 负载均衡算法
1.轮询 (默认)
upstream webserver {
server192.168.27.134:8080;
server192.168.27.135:80;
server192.168.27.136:80;
}
2.weight
upstream webserver {
server192.168.27.134:8080 weight=1;
server192.168.27.135:80 weight=2;
server192.168.27.136:80 weight=2;
}
3.ip_hash ( 解决session共享问题)
upstream webserver {
ip_hash;
server192.168.27.134:8080;
server192.168.27.135:80;
server192.168.27.136:80;
}
4.fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。(第三方)
upstream webserver {
server192.168.27.134:8080;
server192.168.27.135:80;
server192.168.27.136:80;
fair;
}
参考:http://wiki.nginx.org/HttpUpstreamFairModule
5.url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。(第三方)
upstream webserver {
server192.168.27.134:8080;
server192.168.27.135:80;
server192.168.27.136:80;
hash$request_uri;
}
参考:http://wiki.nginx.org/HttpUpstreamRequestHashModule
6.一致性hash (第三方)
参考:http://wiki.nginx.org/HttpUpstreamConsistentHash
三.相关配置
Weight:指定轮询权值,Weight值越大,分配到的访问机率截越高,主要用于后端每个服务器性能不均的情况下。
down:表示当前的server暂时不参与负载均衡,通常和ip_hash一起使用。
backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails:在一定时间内(这个时间在fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1。将其设置为0可以关闭检查,这些错误在proxy_next_upstream和fastcgi_next_upstream(404错误不会使max_fails增加)中定义。
fail_timeout:在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器可能不可用,同样它指定了服务器不可用的时间(在下一次尝试连接请求发起之前),默认为10秒,fail_timeout与前端响应时间没有直接关系,不过可以使用proxy_connect_timeout和proxy_read_timeout来控制。
四.参考资料
http://baidutech.blog.51cto.com/4114344/1033718
http://lobert.iteye.com/blog/1929623
http://blog.csdn.net/poechant/article/details/7256184
以上就介绍了Nginx系列(十三 nginx负载均衡),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
上一篇: php代码加密用什么软件好