代理一台机器为代理,两台机器,就叫负载均衡代理服务器后面可以是多台web服务器,多个web服务器提供服务的时候,就可以实现一个负载均衡正常情况下,用户访问web服务器,是一台一台去请求;要么就是指定一个ip,把这域名解析到多台服务器上
例:用户1-->web1服务器用户2-->web2服务器
用户1-->web1服务器(宕机)用户1因为解析到了web1,但web1宕机了。没法访问
这时候如果使用了nginx负载均衡,web1宕机,代理服务器就不会继续把请求发送到web1
通过dig可以查看到域名的解析ip地址包“bind-utils”
[root@aminglinux-02vhost]#yuminstall-ybind-util[root@aminglinux-02vhost]#digqq.com;<<>>dig9.9.4-redhat-9.9.4-50.el7_3.1<<>>qq.com;;globaloptions:+cmd;;gotanswer:;;->>header<<-opcode:query,status:noerror,id:29688;;flags:qrrdra;query:1,answer:1,authority:0,additional:1;;optpseudosection:;edns:version:0,flags:;udp:4096;;questionsection:;qq.com.ina;;answersection:qq.com.353ina14.17.32.211;;querytime:35msec;;server:119.29.29.29#53(119.29.29.29);;when:三8月1600:14:17cst2017;;msgsizercvd:51
新增一个配置文件load.conf
upstreamqq_com//这个名字可以自定义{ip_hash;//目的是为了让同一个用户始终保持在同一个机器上server14.17.32.211:80;//如果域名解析端口是80,这段配置上的指定端口80是可以省略的}server{listen80;//定义监听端口server_namewww.qq.com;//域名location/{proxy_passhttp://qq_com;//这里填写的是upstream的名字即“http://upstream”,因为作为一个模块,代理访问的是通过解析后的ip访问;proxy_set_headerhost$host;proxy_set_headerx-real-ip$remote_addr;proxy_set_headerx-forwarded-for$proxy_add_x_forwarded_for;}}
upstream来指定多个webserver当有多个服务器同时对一个域名提供服务的时候,长时间访问一个域名,在一定的时效内,会出现需要重新登录或者是说跳转到另外一个地址的服务器上;ip_hash,就是使通过这个代理访问的同一个域名的多个ip的服务器是,始终保持在一个ip上对这个域名进行访问
没有使用负载均衡配置的时候,curl-x127.0.0.1默认访问的是虚拟主机的
[root@aminglinux-02vhost]#curl-x127.0.0.1:80www.qq.comthisisthedefaultsite.
配置完成后检查语法和重新加载服务
-t&&-sreload
测试
[root@aminglinux-02vhost]#curl-x127.0.0.1:80www.qq.comvar_mtac={};(function(){varmta=document.createelement("script");mta.src="http://pingjs.qq.com/h5/stats.js?v2.0.2";mta.setattribute("name","mtah5");mta.setattribute("sid","500460529");vars=document.getelementsbytagname("script")[0];s.parentnode.insertbefore(mta,s);})();