Linux:nginx负载均衡

前提:web服务器框架已搭建好lamp/lnmp),已配置好虚拟主机名(这个的配置在上几章中有写)。

nginx做负载均衡主要的模块是upstream.

1、在新的机器上安装nginx

创建用户nginx和组nginx

解压

进入目录

编译:

./configure --user=nginx --group=nginx --prefix=/application/nginx1.6.2 --with-http_stub_status_modele --with-http_ssl_module

make

make install

创建软连接

启动

检查端口lsof -i:80

2、修改配置文件

在http标签内,增加upstream 配置。并在server标签中,修改location。(可参考官网的帮助文档http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html)

upstream的配置可以是ip,或虚拟主机域名,或域名+端口

 需要注意的是,在负载均衡过程中,对不通的web服务器转发请求的概率是有一定的算法的。

 

但是在像会话保持的问题上,比如访问其中一个web服务器时时登录状态,突然转到另一个服务器可能就会不登陆。这时可用ip_hash算法.保证每次同一个ip访问的都是同一个web。但是这种方法不太好,会导致负载不均

 

我们常用的方法时session共享,或放在用户本地。

3、本地host解析要解析到负载均衡机器上(这台机器)。

 

4、如果web服务器自己有多个虚拟主机,一个web服务器上有多个网站部署。nginx代理转发请求给对应的upstream中的ip后,不能确定访问的哪个域名,加生proxy_set_header 参数,就告诉服务器,我请求的即时当前我要i提交的这个域名

举例:

web服务器A上有2个基于域名的虚拟主机:www.111.com   bbs.111.com

web服务器B上有2个基于域名的虚拟主机:www.111.com   bbs.111.com

现在负载代理的机器上配置有nginx,准备做负载均衡。上面步骤2中的server标签有2个,一个配置的www.1111.com一个配置的bbs.1111.com 

此时如果客户端要访问bbs.1111.com,提交请求到web服务器A或者web服务器B,再访问web服务器A或者B的时候,因为web服务器上有2个虚拟主机,她其实是分不清要去访问哪个的。这时候就需要再nginx代理机器上的server/location中添加上参数proxy_set_header ,告诉web服务器,我要访问的时bbs.111.com而不是www.111.com

 

posted @ 2018-12-26 14:50  六三零  阅读(226)  评论(0编辑  收藏  举报