nginx的配置文件使用语法的就是一门微型的编程语言,可以类似写程序一般编写配置文件,可操作性很大。
既然是编程语言,一般也就少不了“变量”这种概念。
- 所有的 Nginx变量在 Nginx 配置文件中引用时都须带上 $ 前缀
- 在 Nginx 配置中,变量只能存放一种类型的值,有且也只存在一种类型,那就是字符串类型
- nginx可以使用变量简化配置与提高配置的灵活性,所有的变量值都可以通过 $var 这种方式引用
在 Nginx 中,通常不建议在 if 指令中使用 return,而是应该使用 break 或 rewrite 来控制请求流程。
return 指令会直接终止请求处理并返回指定的状态码,而 break 则会终止当前 location 块内的处理并将控制权交回到父级 location 或 server 块中。
server {
listen 80;
server_name www.example.com;
location / {
# 其他配置项...
if ($arg_redirect_uri ~* "\.example\.com|\.wps\.cn|meeting\.qq\.com") {
# 匹配成功,允许通过
# 进行相应的处理...
break;
}
# 匹配失败,返回 403 Forbidden
return 403;
# 其他配置项...
}
# 其他 location 块...
# 其他服务器配置...
}
现在,当匹配成功时,将执行相应的处理,并且通过 break 终止了当前 location 块的处理。
当匹配失败时,会返回 403 Forbidden,并且不会继续执行后续的配置项。
在 Nginx 中,可以通过组合内置变量来创建新的变量。内置变量是由 Nginx 提供的一组预定义的变量,用于存储请求的各种信息,如请求头、查询参数等。而通过 $arg_
前缀可以获取请求中的查询参数的值,例如 $arg_redirect_uri
就是用来获取名为 redirect_uri
的查询参数的值。
现在,让我们看一下如何使用内置变量来创建新的变量:
set $custom_var $arg_redirect_uri;
在上面的示例中,我们使用 set
指令将一个新的变量 $custom_var
设置为 $arg_redirect_uri
的值。这样,$custom_var
就会拥有和 $arg_redirect_uri
相同的值。
这种机制允许你在 Nginx 配置中使用更灵活的方式来管理请求中的信息。你可以根据需要组合不同的内置变量来创建自定义的变量,以满足特定的业务需求。
$arg_redirect_uri
是 Nginx 中的一个变量,它用于获取客户端请求中的名为 redirect_uri
的查询参数的值。在 HTTP 请求中,查询参数通常是通过 URL 中的 ?
字符后面的键值对来传递的。
例如,如果客户端发送了一个请求 http://example.com/path?redirect_uri=http://www.example.com/callback
,那么在 Nginx 的配置中使用 $arg_redirect_uri
就能获取到 http://www.example.com/callback
这个值。
综上所述,$arg_redirect_uri
这个变量的值是客户端请求中携带的 redirect_uri
参数的值。
$arg_xxx 这类变量是如何来的??
$arg_xxx
这类变量是 Nginx 提供的内置变量之一,用于获取客户端请求中的查询参数的值。
在 HTTP 请求中,查询参数通常是通过 URL 中的 ?
字符后面的键值对来传递的。
例如,对于 URL http://example.com/?name=John&age=30
,查询参数就是 name=John
和 age=30
。
Nginx 内置变量 $arg_xxx
中的 xxx
部分表示查询参数的名称。
因此,$arg_name
会获取名为 name
的查询参数的值,而 $arg_age
则会获取名为 age
的查询参数的值。
这些内置变量能够方便地提取客户端请求中的查询参数,并在 Nginx 配置中使用,例如用于条件判断、重定向、日志记录等场景。
参考
Alphabetical index of variables
http://nginx.org/en/docs/varindex.html
nginx的全局变量的说明args nginx变量使用
https://blog.51cto.com/u_16099328/9650838
Nginx 的变量究竟是怎么一回事?
https://iziyang.github.io/2020/06/08/7-nginx/
Nginx 如何自定义变量?
https://iziyang.github.io/2020/06/14/9-nginx/
nginx 剔除请求参数 $args 变量中任意指定参数
https://www.cnblogs.com/dennyLee2025/p/13742497.html
Nginx
https://iziyang.github.io/tags/nginx/
nginx的全局变量的说明args nginx变量使用
https://blog.51cto.com/u_16099328/9650838
Embedded Variables
http://nginx.org/en/docs/http/ngx_http_core_module.html#var_arg_
网友评论