先说根据访问的目录来区分后端的web

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

我的配置文件内容为:

  1. upstream aaa.com 

  2. {

  3.             server 192.168.111.6;

  4. }


  5. upstream bbb.com 

  6. {

  7.             server 192.168.111.20;

  8. }


  9. server {

  10.         listen 80;

  11.         server_name li.com;

  12.         location /aaa/

  13.         {

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

  15.             proxy_set_header Host   $host;

  16.             proxy_set_header X-Real-IP      $remote_addr;

  17.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


  18.         }


  19.         location /bbb/

  20.         {

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

  22.             proxy_set_header Host   $host;

  23.             proxy_set_header X-Real-IP      $remote_addr;

  24.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


  25.         }

  26.         location /

  27.         {

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

  29.             proxy_set_header Host   $host;

  30.             proxy_set_header X-Real-IP      $remote_addr;

  31.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


  32.         }


  33. }


复制代码

说明:
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 的。


nginx针对请求的uri来代理:

场景:1台nginx去代理4台apache
需求:根据不同的请求uri 代理到不同的apache

nginx的配置文件为:


  1.     upstream aa.com {         

  2.                       server 192.168.0.121;

  3.                       server 192.168.0.122;  

  4.      } 


  5.     upstream bb.com {  

  6.                        server 192.168.0.123;

  7.                        server 192.168.0.124;

  8.         } 

  9.     server { 

  10.         listen       80; 

  11.         server_name  www.abc.com;

  12.         location ~ aa.php

  13.         { 

  14.             proxy_pass http://aa.com/; 

  15.             proxy_set_header Host   $host; 

  16.             proxy_set_header X-Real-IP      $remote_addr; 

  17.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

  18.         } 


  19.          location ~ bb.php

  20.         {

  21.               proxy_pass http://bb.com/;

  22.               proxy_set_header Host   $host;

  23.               proxy_set_header X-Real-IP      $remote_addr;

  24.               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  25.           } 

  26. }