a.com
192.168.5.149
192.168.5.27
192.168.5.126
A服务器做为主服务器,域名直接解析到A服务器(
192.168.5.149
)上,由A服务器负载均衡到B服务器(192.168.5.27
)与C服务器(192.168.5.126
)上。
conf.d
文件夹中,创建master.conf
,写入upsteam a.com {
server 192.168.5.126:80;
server 192.168.5.27:80;
}
server {
listen 80;
server_name a.com;
location / {
proxy_pass http://a.com;
proxy_set_header host $hosts;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx
,分别创建monion.conf
,写入server{
listen 80;
server_name b.com;
index index.html;
root /data0/htdocs/www;
}
保存重启nginx
当访问
a.com
的时候,为了区分是转向哪台服务器处理我分别在B、C服务器下写一个不同内容的index.html
文件,以作区分。 打开浏览器访问a.com
结果,刷新会发现所有的请求均分别被主服务器(192.168.5.149
)分配到B服务器(192.168.5.27
)与C服务器(192.168.5.126
)上,实现了负载均衡效果。
假设C服务器
192.168.5.126
这台机子宕机了,访问仍然不受影响,就不会担心在负载均衡模式下因为某台机子宕机而拖累整个站点了。
我们都是应用到了主服务器负载均衡到其它服务器上,那么主服务器本身能不能也加在服务器列表中,这样就不会白白浪费拿一台服务器纯当做转发功能,而是也参与到提供服务中来。
我们把域名解析到A服务器,然后由A服务器转发到B服务器与C服务器,那么A服务器只做一个转发功能,现在我们让A服务器也提供站点服务。
我们先来分析一下,如果添加主服务器到upstream中,那么可能会有以下两种情况发生:
为什么?
因为80端口已经用来监听负载均衡的处理,那么本服务器上就不能再使用80端口来处理a.com的访问请求,得用一个新的端口
server{
listen 8080;
server_name a.com;
index index.html;
root /data0/htdocs/www;
}
重启
nginx
,在主机器浏览器输入a.com:8080
,即可访问了
upstream a.com {
server 192.168.5.126:80;
server 192.168.5.27:80;
server 127.0.0.1:8080;
}
这里可以添加主服务器IP
192.168.5.149
或者127.0.0.1
均可以,都表示访问自己。 重启nginx
,那么就可以了
upstream
里的IP不一定是内网,外网IP也可以。不过经典的案例是,局域网中某台IP暴露在外网下,域名直接解析到此IP。然后又这台主服务器转发到内网服务器IP中。ParadigmSDKv3.init('f31e45e6e4a54a2ba32539ef6053b7ad',{ isDisableArticleFetch: true });ParadigmSDKv3.renderArticle('paradigm_render_content_append_id_1038',548,1038);
本文作者为琼台博客,转载请注明。