我的需求: 当请求的目录是 /aaa/ 则把请求发送到机器a,当请求的目录为/bbb/则把请求发送到机器b,除了目录/aaa/与目录/bbb/外,其他的请求发送到机器b

我的配置文件内容为:

1 upstream aaa.com

2 {

3            server 192.168.111.6;

4 }

5

6 upstream bbb.com

7 {

8            server 192.168.111.20;

9 }

10

11 server {

12        listen 80;

13        server_name li.com;

14        location /aaa/

15        {

16            proxy_pass http://aaa.com/aaa/;

17            proxy_set_header Host   $host;

18            proxy_set_header X-Real-IP      $remote_addr;

19            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

20

21        }

22

23        location /bbb/

24        {

25            proxy_pass http://bbb.com/bbb/;

26            proxy_set_header Host   $host;

27            proxy_set_header X-Real-IP      $remote_addr;

28            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

29

30        }

31        location /

32        {

33            proxy_pass http://bbb.com/;

34            proxy_set_header Host   $host;

35            proxy_set_header X-Real-IP      $remote_addr;

36            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

37

38        }

39

40 }

复制代码

说明:
1 以上配置文件中的 aaa.com 以及 bbb.com 都是自定义的,随便写。
2 upstream 中的server 可以写多个,例如

upstream aaa.com
{
           server 192.168.111.6;
           server  192.168.111.4;
           server  192.168.111.5;
}

3 proxy_pass http://aaa.com/aaa/  这里必须要加这个目录,不然就访问到根目录了。
4 实际上,上述配置文件中, localtion /bbb/ 部分是可以省略掉的,因为后边的 location /  已经包含了/bbb/,所以即使我们不去定义  localtion /bbb/ 也是会访问到 bbb.com 的。