# 配置实例四：对不同域名实现负载均衡

在该实例片段中，我们设置了两个**虚拟服务器**和两组后端被代理的**服务器组**，分别用来接收不同的域名请求和对这些请求进行负载均衡处理。

* 如果客户端请求域名为“**home.myweb.name**”，则由服务器**server 1**接收并转向**homebackend**服务器组进行负载均衡处理；
* 如果客户端请求域名为“**bbs.myweb. name**”，则由服务器**server 2**接收并转向**bbsbackend**服务器组进行负载均衡处理。

```nginx
…
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;
    …
  }
  …
}
```

{% hint style="success" %}
需要认识到server\_name是一个匹配规则，匹配的是请求中的Host头，也就是说：客户端会访问Nginx服务器，然后Nginx会根据客户端发送过来的请求头中的Host字段来决定将请求转发给哪一个server。<br>

存在两种实验方法：

* 第一种是修改客户端的hosts文件，增加hostname到ip地址的映射规则：

  ```dns-zone-file
  192.168.10.110 server1
  192.168.10.110 server2
  ```
* 第二种是修改请求报文中的Host头字段。

  <figure><img src="https://2820704264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcia81SyIbV4ECEQL4Mxy%2Fuploads%2FgKwZ7A8Ibo8G1Jn91evT%2Fimage.png?alt=media&#x26;token=70e1b056-6159-4e4b-854e-5f269cef1aeb" alt=""><figcaption></figcaption></figure>

在实际的工作场景中，hostname与ip地址的映射是通过DNS服务完成的，可以让不同网址指向部署了nginx的服务器。
{% endhint %}
