Nginx 中$args
和 $arg_from
区别
在 Nginx 配置 中,$args
和 $arg_from
是 与 URL 查询参数相关的变量。
1. $args
的含义
• $args
代表整个 URL 的查询参数字符串(即?
之后的所有内容)。• 格式: key1=value1&key2=value2
• 示例: • 请求 URL: http://example.com/path?from=distridata&user=admin
• $args
变量的值:from=distridata&user=admin
• 使用场景:可以用 $args = ""
来检查请求是否 没有查询参数:
表示:如果没有任何参数,则转发到if ($args = "") {
set $backend "http://wms-middleware-service";
}wms-middleware-service
。
2. $arg_from
的含义
• $arg_变量名
用于获取 URL 查询参数的具体值。• 格式: $arg_参数名
• 示例: • 请求 URL: http://example.com/path?from=distridata&user=admin
• $arg_from
的值:distridata
• $arg_user
的值:admin
• 使用示例:
表示:如果if ($arg_from = "distridata") {
set $backend "http://erp-service";
}from=distridata
存在,则转发到erp-service
。
3. $args
和 $arg_from
的区别
$args | ?from=distridata&user=admin | "from=distridata&user=admin" | |
$arg_from | from | ?from=distridata&user=admin | "distridata" |
$arg_user | user | ?from=distridata&user=admin | "admin" |
4. 示例:综合使用
server {
listen80;
server_name example.com;
location /api {
set$backend"http://default-service";
if ($args = "") {
set$backend"http://no-param-service";
}
if ($arg_from = "distridata") {
set$backend"http://erp-service";
}
proxy_pass$backend;
}
}
请求解析
$args | $arg_from | $backend | |
/api | "" | "" | http://no-param-service |
/api?test=123 | "test=123" | "" | http://default-service |
/api?from=distridata | "from=distridata" | "distridata" | http://erp-service |
结论
• $args
代表 所有查询参数(整体字符串)。• $arg_xxx
代表 单个查询参数 的值。• 常见用途: • $args = ""
:判断 URL 是否 没有查询参数。• $arg_xxx = "值"
:判断 URL 是否 包含某个特定参数。
这样,你可以根据不同的 URL 参数 灵活控制 Nginx 的请求转发逻辑

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!
优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、微信小程序定制开发、移动端应用(手机站、APP开发)、微信定制开发(微信官网、微信商城、企业微信)等一系列互联网应用服务。