nginx是如何实现负载均衡的,nginx的upstream目前支持以下几种方式的分配:
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
 
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
 
2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
 
3、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
 
4、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
 
一、准备环境如下:
1、我们配置四个nginx的虚拟主机,分别如下:
www.site.com
127.0.0.1:8081
127.0.0.1:8082
127.0.0.1:8083
site1.conf的配置如下:
server {
#监听的端口号
listen 8081;
#虚拟主机名
server_name 127.0.0.1;
#编码
charset utf-8;
#访问日志
access_log logs/site1.access.log combined; location / {
#网站路径
root /data/wwwroot/site1;
#默认首页文件
index index.html index.htm index.php;
} #在http中加入fastcgi_intercept_errors on;
#配置404信息
error_page 404 /404.html;
#配置500信息
error_page 500 502 503 504 /50x.html; #缓存图片资源
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 15d;
} #缓存js、css资源
location ~ .*\.(js|css)$ {
expires 1d;
} #对php的支持
location ~ \.php$ {
root /data/wwwroot/site1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

site2.conf和site3.conf的配置同site1.conf,只是端口、日志文件和目录地址需要修改。

 
2、三个站点下分别创建index.html,方便查看访问了哪个虚拟主机
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
我是站点一
</body>
</html>
二、配置好上述三台虚拟主机后,我们需要在nginx.conf的http{}节点中设置upstream
#注意这里的myserver,可自定义
upstream myserver {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
三、在需要负载的虚拟主机配置文件中添加
proxy_pass http://myserver;

修改后的site.conf文件如下:

server {
#监听的端口号
listen 80;
#虚拟主机名
server_name www.site.com; location / {
#注意这里的myserver要与你upstream中的命名一致
proxy_pass http://myserver; proxy_redirect off; #注意,如果是本地反向代理并且端口不区分时(比如:都是用的80端口)
#需要把下面这行注释,不然会产生死循环
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#后端服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
四、我们重启nginx,通过浏览器访问www.site.com。
我们刷新浏览器,可以看到,网站出现的内容,会随着你的刷新,轮询显示站点一,站点二,站点三。
 
五、upstream中的配置
upstream myserver {
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=2;
server 127.0.0.1:8083 weight=3;
}
weight默认为1,weight越大,负载的权重就越大。
upstream myserver {
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 down;
}
down表示当前的server暂时不参与负载
upstream myserver {
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 backup;
}

backup其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

upstream myserver {
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 max_fails=3 fail_timeout=30s;
}

max_fails允许请求失败的次数默认为1,当超过最大次数时返回proxy_next_upstream 模块定义的错误

fail_timeout当max_fails 次失败后,暂停的时间。

linux 下 nginx的负载均衡的更多相关文章

  1. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  2. Linux下Nginx+Tomcat负载均衡和动静分离配置要点

    本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download 一.安装Nginx 下载源:wget http://nginx.org/pa ...

  3. Linux环境下Nginx及负载均衡

    Nginx 简介 Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务.前向代理作为客户端的代理,服务端只知道代理的 IP 地址而不知道客 ...

  4. Windows下Nginx实现负载均衡

    Apache,Nginx Apache和Nginx都属于属于 静态页面服务器,都有插件支持动态编程语言处理,但Nginx的IO模比Apache更适合跑代理.所以一般都作为前端缓冲代理(Nginx的反向 ...

  5. lnmp环境下nginx配置‘负载均衡’

    NGINX负载均衡分发请求的几种方式: 1.轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.2.weight 指定轮询几率,weight和访问比率成正比 ...

  6. Linux记录-Nginx+Tomcat负载均衡配置

    Nginx负载均衡配置及策略: 轮询(默认) 优点:实现简单缺点:不考虑每台服务器的处理能力配置示例如下:upstream www.xxx.com {# 需要负载的server列表server www ...

  7. Nginx简单介绍以及linux下使用Nginx进行负载均衡的搭建

    1.Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5 ...

  8. Linux下利用nginx实现负载均衡

    linux下利用nginx实现负载均衡 前提条件: 1,安装好jdk 2,安装好tomcat和nginx(可以参考我前两篇文章) 满足前提条件后,要用nginx实现负载均衡,主要是靠配置nginx的配 ...

  9. Linux 下 Nginx 反向代理 负载均衡配置

    转载请注明出处:http://blog.csdn.net/smartbetter/article/details/52036350 上一篇分享了 Nginx + JDK + Tomcat + MySQ ...

随机推荐

  1. Android之sandbox技术

    ART 虚拟机下Hook工具:VirtualHook http://bbs.pediy.com/thread-216786.htm Github: https://github.com/rk700/V ...

  2. python学习之----urllib与urllib2的区分

    urllib 还是urllib2 ? 如果你用过Python 2.x 里的urllib2 库,可能会发现urllib2 与urllib 有些不同. 在Python 3.x 里,urllib2 改名为u ...

  3. android提权

    Android的内核就是Linux,所以Android获取root其实和Linux获取root权限是一回事儿. 你 想在Linux下获取root权限的时候就是执行sudo或者su,接下来系统会提示你输 ...

  4. JVM 技术分享(初级)

    一个java程序是怎样运行起来的: public class Test { public static void main(String[] args){ System.out.println(&qu ...

  5. PHP获取照片exif信息

    在这个没图说个屁的年代,照片还是很重要的.如果照片上传后会自动加上 照片相关信息,那用户体验的确会好很多,本着这个想法,今天尝试了下 PHP获取照片exif信息,重要的是 获取图片的GPS信息,如果再 ...

  6. 数据分析利器之hive优化十大原则

    hive之于数据民工,就如同锄头之于农民伯伯.hive用的好,才能从地里(数据库)里挖出更多的数据来. 用过hive的朋友,我想或多或少都有类似的经历:一天下来,没跑几次hive,就到下班时间了. h ...

  7. CentOS 7.4 安装部署 iRedMail 邮件服务器

    在公司部署了一套开源的邮件网关Scrollout F1用来测试,由于Scrollout F1需要使用IMAP协议连接到邮件服务器上的隔离邮箱,抓取GOOD和BAD文件夹里的邮件进行贝叶斯学习,但公司的 ...

  8. VCSA 6.5 升级 VCSA 6.7

    VCSA 6.7已于4月17日正式发布,文件名为VMware-VCSA-all-6.7.0-8217866.iso,国内百度网盘已有下载链接,请自行搜索. 下载后解压,运行\VMware-VCSA-a ...

  9. C# 生成word文档(NPOI)

    using NPOI.XWPF.UserModel XWPFDocument doc = new XWPFDocument(); //创建新的word文档 XWPFParagraph p1 = doc ...

  10. HTML 标签元素的 align 属性

    align 属性规定段落中文本的对齐方式. 有 left  right center  justify 这些参数 left  right center  就是左对齐 右对齐 中间对齐 justify  ...