Nginx Proxy Route by Query Parameter

本文探讨了如何使用Nginx配置文件中的location块来根据URL查询参数进行后端路由选择。具体示例展示了当特定参数存在时,流量如何被导向不同的服务器。通过条件语句,可以实现灵活的请求分发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值