跳转至

json-var: NGINX JSON 变量模块

安装

您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:

  • RedHat Enterprise Linux 7、8、9 和 10
  • CentOS 7、8、9
  • AlmaLinux 8、9
  • Rocky Linux 8、9
  • Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-json-var
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-json-var

通过在 /etc/nginx/nginx.conf 的顶部添加以下内容来启用该模块:

load_module modules/ngx_http_json_var_module.so;

本文档描述了 nginx-module-json-var v1.1,于 2022 年 2 月 11 日发布。


json_var

  • 语法: json_var $variable { ... }
  • 默认值: none
  • 上下文: http

创建一个新变量,其值是一个包含块内列出项的 JSON。 json_var 块内的参数指定应包含在结果 JSON 中的字段。 每个参数必须包含两个参数 - 键和值。 值可以包含 nginx 变量。

示例配置

http {
    json_var $output {
        timestamp $time_local;
        remoteAddr $remote_addr;
        xForwardedFor $http_x_forwarded_for;
        userAgent $http_user_agent;
        params $args;
    }

    server {
        location /get_json/ {
            return 200 $output;
        }
    }
访问 http://domain/get_json/?key1=value1&key2=value2 可以返回如下 JSON:
{
    "timestamp": "21/Jul/2017:12:44:18 -0400",
    "remoteAddr": "127.0.0.1",
    "xForwardedFor": "",
    "userAgent": "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3",
    "params": "key1=value1&key2=value2"
}

GitHub

您可以在 nginx-module-json-var 的 GitHub 仓库 中找到有关此模块的其他配置提示和文档。