首页 > 代码库 > Nginx 负载均衡

Nginx 负载均衡

Nginx 负载均衡

1、Nginx 负载均衡概述

  随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx就是其中的一个。

  Nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。

2、Nginx负载均衡实施

Nginx负载均衡实施环境,Windows Server 2008 R2;
首先需要从官网下载windows安装包,http://nginx.org/en/download.html
下载之后进行解压,打开cmd命令行,进入nginx当前目录。

2、1 Nginx环境下的http配置

2、1、1 配置步骤

第一步:执行命令,start nginx
开启服务;打开浏览器,输入127.0.0.1,会提示出现如下界面:


图1
如果没有见到此界面,请查看(Nginx负载均衡答疑)。
以上是本机访问,需要测试负载均衡还需要添加如下命令:

server localhost{
ip_hash;
server 192.168.0.120:80 weight=11 max_fails=2 fail_timeout=600s;
server 192.168.0.47:80 weight=1 max_fails=2 fail_timeout=600s;
}
把以上命令添加到server节点之前,server是服务器集群节点一。

2、1、2 配置效果

图2

图3

2、2 Nginx环境下的https配置

2、2、1 配置步骤
由于https会有证书的存在,所以需要用到OPENSSL
第一步:下载openssl(windows 安装包);
第二步:打开bin/下面的openssl.exe;
第三步: 在取得证书,证书格式xx.pfx;

第四步:利用openssl进行证书转化:
证书转换命令如下:
openssl pkcs12 –in server.pfx –nodes –out server.pem
openssl rsa –in server.pem –out server.key
openssl x509 –in server.pem –out server.crt

第五步:把刚刚导出的证书server.crt和server.pem复制到nginx的conf目录下面;

第六步:在Nginx上面配置:
打开nginx.conf,在server节点下面添加如下命令:
listen 443 ssl;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!Anull:!MD5;
2、2、2 配置效果

图4
看到此页面后,需要点击【继续浏览此网站(不推荐)】

图5

3、Nginx负载均衡答疑

问:出现网页乱码。
答:网页的编码格式和nginx的格式不一样,在nginx的配置里面设置编码格式,在server节点下面添加(charset UTF-8;);
问:为何每次更改配置之后都没有效果?
答:每次更改配置之后,都需要重启nginx,命令如下:nginx.exe -s reload
问:为何配置了upstream localhost之后,还是不能进行负载均衡?
答:在location节点下面添加命令:proxy_pass http://localhost,这里的localhost是和upstream后面的名字一样,这里代表的服务的名字,只要相同就可以。
问:明明设置不同的权重,为何不会出现负载均衡?
答:设置权重的时候,由于权重不是相差很大,所以没有那么明显,比较大权重的服务器被分配到任务的机率比较大,如果需要看效果,可以设置相差很大的权重,这样就可以很快看到效果。
问:Nginx启动报错
Nginx在win7,win2008下启动报错:bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions) 。
答:原因是Windows下nginx默认80端口被System占用,造成nginx启动报错的解决方案。在cmd下运行 netstat -aon | findstr :80查看80端口有没有被占用。解决方法:1、打开注册表:regedit2、找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP3、找到一个REG_DWORD类型的项Start,将其改为04、重启系统,System进程不会占用80端口重启之后,start nginx.exe 。在浏览器中,输入127.0.0.1,即可看到亲爱的“Welcome to nginx!” 了。







Nginx 负载均衡