Nginx使用if指令实现多个proxy_pass

2021/9/16 7:08:00

本文主要是介绍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。



这篇关于Nginx使用if指令实现多个proxy_pass的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程