配置实例四:对不同域名实现负载均衡
在该实例片段中,我们设置了两个虚拟服务器和两组后端被代理的服务器组,分别用来接收不同的域名请求和对这些请求进行负载均衡处理。
如果客户端请求域名为“home.myweb.name”,则由服务器server 1接收并转向homebackend服务器组进行负载均衡处理;
如果客户端请求域名为“bbs.myweb. name”,则由服务器server 2接收并转向bbsbackend服务器组进行负载均衡处理。
…
upstream bbsbackend
{
server 192.168.1.2:80 weight=2;
server 192.168.1.3:80 weight=2;
server 192.168.1.4:80;
}
upstream homebackend
{
server 192.168.1.4:80;
server 192.168.1.5:80;
server 192.168.1.6:80;
}
# 开始配置server 1
server
{
listen 80;
server_name home.myweb.name;
index index.html index.htm;
location / {
proxy_pass http://homebackend;
proxy_set_header Host $host;
…
}
…
}
# 开始配置server 2
server
{
listen 80;
server_name bbs.myweb.name;
index index.html index.htm;
location / {
proxy_pass http://bbsbackend;
proxy_set_header Host $host;
…
}
…
}
需要认识到server_name是一个匹配规则,匹配的是请求中的Host头,也就是说:客户端会访问Nginx服务器,然后Nginx会根据客户端发送过来的请求头中的Host字段来决定将请求转发给哪一个server。
存在两种实验方法:
第一种是修改客户端的hosts文件,增加hostname到ip地址的映射规则:
192.168.10.110 server1 192.168.10.110 server2
第二种是修改请求报文中的Host头字段。
在实际的工作场景中,hostname与ip地址的映射是通过DNS服务完成的,可以让不同网址指向部署了nginx的服务器。
Last updated
Was this helpful?