Nginx负载均衡:
关于负载均衡实际上和上一篇末尾讲的代理服务器的概念差不多,代理一台机器,叫做代理服务器,代理多台机器就叫做负载均衡。
使用负载均衡是为了将多个用户的请求均匀的发送给多台web服务器,如果没有负载均衡的话,用户A访问web服务器A时,web服务器A宕机了,那么用户A的访问请求就不会被处理,而有负载均衡的话,负载均衡会把用户A的访问请求发送给其他的web服务器去进行处理。
在配置负载均衡前先介绍一个命令:dig
安装命令:
yum -y install bind-utils
dig是用来进行域名解析的,例如我解析qq.com这个域名,使用dig能够反馈更多的解析信息:
dig YY.com
现在我们开始配置负载均衡,新建一个虚拟主机配置文件:
扫描二维码关注公众号,回复:
82731 查看本文章
vim /usr/local/nginx/conf/vhost/ld.conf
增加以下内容,我拿解析到YY.com的ip来当服务器做这个实验:
upstream YY_com #upstream是一个模块,需要使用它来定义多个IP YY_com=名字可以任意修改
{
ip_hash; #ip_hash是为了让同一个用户始终保持在同一个机器上
#定义两个服务器的ip,qq.com解析出来的ip
server 221.228.79.225:80;
server 113.107.236.195:80;
}
server
{
listen 80; #定义监听端口
server_name www.YY.com; #定义域名
location /
{
proxy_pass http://YY_com; #upstream的名称,这个名称代表着upstream里定义的ip
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
编辑完之后保存退出,先不要重新加载配置文件,先测试一下用本机ip去访问www.YY.com这个域名看看结果会是什么:
这时我们重新加载配置文件,再访问一次看看: -t && -s reload
可以看到能够访问到www.YY.com,并输出了这个页面的html源码,这个就是负载均衡。
关于Nginx负载均衡方面要注意一点:
Nginx不支持直接代理https,只能代理http,也就是说443端口不支持只支持80端口。如果非要代理https,只能是用户访问Nginx代理服务器时使用https,然后Nginx去访问后端的web服务器时使用http,属于折中的一种方式,依然不能直接代理。