![nginx代理GET到一个服务器,GET&另一个服务器上的所有其他内容](https://linux22.com/image/563473/nginx%E4%BB%A3%E7%90%86GET%E5%88%B0%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8CGET%EF%BC%86%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E6%89%80%E6%9C%89%E5%85%B6%E4%BB%96%E5%86%85%E5%AE%B9.png)
我有我们的应用程序的新版本,它需要在投入生产之前进行测试。
当前有一台主机接收所有请求并使用 proxy_pass 将它们转发到 Apache。我想添加另一台服务器,并仅将一些 GET 请求转发给它。
可以配置 nginx 来做到这一点吗?
答案1
是的,您需要在配置中设置第二个上游,然后使用某些东西将特定请求发送到那里。例如:
upstream old_upstream {
1.2.3.4:8080;
}
upstream new_upstream {
5.6.7.8:8080;
}
set $upstream old_upstream;
if ( somecondition where you want to use the new server ) {
set $upstream new_upstream;
}
location / {
proxy_pass http://$upstream;
}
答案2
或者您可以简单地不使用上游并使用简短版本。
location / {
if (somecondition for new server ) {
proxy_pass http://5.6.7.8:8080;
break;
}
proxy_pass http://1.2.3.4:8080;
}
如果有帮助请+1 :) 谢谢