Nginx Proxy Route by Query Parameter

Nginx Proxy Route by Query Parameter

Here comes our requirement, I need to route to different backend based on the URL query parameters. If parameter=1, I need go server1, parameter=2, I need go server2.

Here is how I test that
resolver 8.8.8.8;
set $ocpServer 'https://ocp.sillycat.com';
set $testServer 'http://requestbin.fullcontact.com/1ki7o9g1';
location / {
if ( $http_user_agent = 'oldclients' ) {
proxy_pass http://local-sillycat-external-ip:5080;
}
if ( $http_user_agent != 'oldclients' ) {
proxy_pass $ocpServer;
}
#for testing the header, comments out
if ( $arg_api = 'describeNode') {
proxy_pass $testServer;
}

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Sillycat-Agent 'nginx';
proxy_ssl_server_name on;
}

In this case, I will go to different route based on http_user_agent header, but the top condition is api=describeNode, it this query parameter exists, I will go to $testServer which my testing end point.

References:
https://stackoverflow.com/questions/23988344/making-nginx-check-parameter-in-url#
https://serverfault.com/questions/811912/can-nginx-location-blocks-match-a-url-query-string
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值