Nginx使用if指令实现多个proxy_pass

Nginx使用if指令实现多个proxy_pass

  • 1. 背景
  • 2. http模块实现
    • 2.1 upstream配置
    • 2.2 server配置
  • 3. stream模块实现

1. 背景

研究根据客户端的IP指向不同的代理端口。

2. http模块实现

2.1 upstream配置

    upstream webdemo1{
	    server 127.0.0.1:8001;
	}
	upstream webdemo2{
	    server 127.0.0.1:8002;
	}

2.2 server配置

    listen       8008;
    server_name  192.168.0.118;
		
    set $jianhang false;
		
	if ($remote_addr = "192.168.0.105") {
		set $jianhang true;
	}
		
	location /webdemo {
		if ($jianhang = true) {
			proxy_pass http://webdemo2;
		    break;
		}
		proxy_pass http://webdemo1;   
	}

3. stream模块实现

stream也想使用http模块的思路实现,经查询nginx的doc文档,发现stream不存在if指令,if指令是存在ngx_http_rewrite_module模块下的,所应用的上下文环境是:server和location。

你可能感兴趣的:(随笔,项目实施,JAVA,nginx,负载均衡)