美文网首页
【nginx】Nginx 的变量

【nginx】Nginx 的变量

作者: Bogon | 来源:发表于2024-05-27 09:37 被阅读0次

    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=Johnage=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_

    相关文章

      网友评论

          本文标题:【nginx】Nginx 的变量

          本文链接:https://www.haomeiwen.com/subject/tmucqjtx.html