Analyzer

This document explains how to use analyzer in NGINX Instance Manager.

Prerequisites

  1. Install NGINX Instance Manager Server.
  2. Install NGINX or NGINX Plus and the NGINX Agent.
  3. Start and Enable Instance Manager.

Analyzer from the UI

Open the user interface on https://nginx-manager.example.com:11000 (or similar) and navigate to the Inventory tab on the left side menu. Select the instance you want to analyze by clicking the instance id link in the table.

Inventory UI

Then select the config tab at the top of the main panel to open the editor.

Editor UI

You can make the changes you need and the analyzer will check your configuration when you move off the line you are editing.

Analyzer from the API

Call the API on https://nginx-manager.example.com:11000/api/v0/configs/analyze and run something similar to the following call.

curl -X POST "https://nginx-manager.example.com/api/v0/configs/analyze" -H  "accept: application/json" -H  "Content-Type: application/json" -d "{  \"partial\": false,  \"plus\": true,  \"contents\": \"ICMgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uZmlndXJhdGlvbiwgc2VlOgojICAgKiBPZmZpY2lhbCBFbmdsaXNoIERvY3VtZW50YXRpb246IGh0dHA6Ly9uZ2lueC5vcmcvZW4vZG9jcy8KIyAgICogT2ZmaWNpYWwgUnVzc2lhbiBEb2N1bWVudGF0aW9uOiBodHRwOi8vbmdpbngub3JnL3J1L2RvY3MvCgp1c2VyIG5naW54Owp3b3JrZXJfcHJvY2Vzc2VzIGF1dG87CmVycm9yX2xvZyAvdmFyL2xvZy9uZ2lueC9lcnJvci5sb2c7CnBpZCAvcnVuL25naW54LnBpZDsKCiMgTG9hZCBkeW5hbWljIG1vZHVsZXMuIFNlZSAvdXNyL3NoYXJlL2RvYy9uZ2lueC9SRUFETUUuZHluYW1pYy4KI2luY2x1ZGUgL3Vzci9zaGFyZS9uZ2lueC9tb2R1bGVzLyouY29uZjsKCmV2ZW50cyB7CiAgICB3b3JrZXJfY29ubmVjdGlvbnMgMTAyNDsKfQoKaHR0cCB7CiAgICBsb2dfZm9ybWF0IG1haW4gJyRyZW1vdGVfYWRkciAtICRyZW1vdGVfdXNlciBbJHRpbWVfbG9jYWxdICIkcmVxdWVzdCIgJyAnJHN0YXR1cyAkYm9keV9ieXRlc19zZW50ICIkaHR0cF9yZWZlcmVyIiAnICciJGh0dHBfdXNlcl9hZ2VudCIgIiRodHRwX3hfZm9yd2FyZGVkX2ZvciInOwoKICAgIGluY2x1ZGUgL2V0Yy9uZ2lueC90ZXN0LmNvbmY7CgogICAgZXJyb3JfbG9nIC92YXIvbG9nL25naW54L2Vycm9yLmxvZyB3YXJuOwoKICAgIGFjY2Vzc19sb2cgL3Zhci9sb2cvbmdpbngvYWNjZXNzLmxvZyBtYWluOwoKICAgIHNlbmRmaWxlIG9mZjsKICAgIHRjcF9ub3B1c2ggb247CiAgICB0Y3Bfbm9kZWxheSBvbjsKICAgIGtlZXBhbGl2ZV90aW1lb3V0IDY1OwogICAgdHlwZXNfaGFzaF9tYXhfc2l6ZSAyMDQ4OwoKICAgIGluY2x1ZGUgL2V0Yy9uZ2lueC9taW1lLnR5cGVzOwogICAgZGVmYXVsdF90eXBlIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTsKCiAgICAjIExvYWQgbW9kdWxhciBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gdGhlIC9ldGMvbmdpbngvY29uZi5kIGRpcmVjdG9yeS4KICAgICMgU2VlIGh0dHA6Ly9uZ2lueC5vcmcvZW4vZG9jcy9uZ3hfY29yZV9tb2R1bGUuaHRtbCNpbmNsdWRlCiAgICAjIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgaW5jbHVkZSAvZXRjL25naW54L2NvbmYuZC8qLmNvbmY7Cn0K\"}"

This should present you with a response similar to the one below.

{
  "instance_id": "string",
  "error_count": "string",
  "results": [
    {
      "directive": "string",
      "args": [
        "string"
      ],
      "severity": "error",
      "message": "string",
      "line": 0,
      "column": 0,
      "rule": "string",
      "rule_description": "string",
      "links": [
        "string"
      ],
      "filename": "string"
    }
  ]
}

Analyzer Rule References

Analyzer currently uses a static ruleset. Customized rules are coming soon but until they do, the rules below are the ones that are checked.

Analyzer Errors

{
    "version": 1,
    "rules": [
      {
        "name": "load-module-order",
        "type": "beforeAny",
        "description": "Checks that load_module directives occur before other directives",
        "module": "core",
        "match": {
          "directive": "load_module",
          "params": {
            "others": ["events", "http", "mail", "stream"]
          }
        },
        "action": {
          "severity": "error",
          "links": [
            "http://nginx.org/en/docs/ngx_core_module.html#load_module",
            "https://docs.nginx.com/"
          ]
        }
      }
    ]
  }

Analyzer Core

{
  "version": 1,
  "rules": [
    {
      "name": "accept-mutex-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that accept_mutex is in an allowed context",
      "module": "core",
      "match": {
        "directive": "accept_mutex",
        "params": { "allowed": ["/events"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#accept_mutex",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-accept-mutex-arg-count",
      "type": "argCount",
      "description": "Checks that accept_mutex has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/events"],
        "directive": "accept_mutex",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#accept_mutex",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-accept-mutex-no-block",
      "type": "noBlock",
      "description": "Checks that accept_mutex is not a block",
      "module": "core",
      "match": { "contexts": ["/events"], "directive": "accept_mutex" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#accept_mutex",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "accept-mutex-delay-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that accept_mutex_delay is in an allowed context",
      "module": "core",
      "match": {
        "directive": "accept_mutex_delay",
        "params": { "allowed": ["/events"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#accept_mutex_delay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-accept-mutex-delay-arg-count",
      "type": "argCount",
      "description": "Checks that accept_mutex_delay has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/events"],
        "directive": "accept_mutex_delay",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#accept_mutex_delay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-accept-mutex-delay-no-block",
      "type": "noBlock",
      "description": "Checks that accept_mutex_delay is not a block",
      "module": "core",
      "match": { "contexts": ["/events"], "directive": "accept_mutex_delay" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#accept_mutex_delay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "daemon-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that daemon is in an allowed context",
      "module": "core",
      "match": { "directive": "daemon", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#daemon",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-daemon-arg-count",
      "type": "argCount",
      "description": "Checks that daemon has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "daemon",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#daemon",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-daemon-no-block",
      "type": "noBlock",
      "description": "Checks that daemon is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "daemon" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#daemon",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "debug-connection-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that debug_connection is in an allowed context",
      "module": "core",
      "match": {
        "directive": "debug_connection",
        "params": { "allowed": ["/events"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#debug_connection",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-debug-connection-arg-count",
      "type": "argCount",
      "description": "Checks that debug_connection has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/events"],
        "directive": "debug_connection",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#debug_connection",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-debug-connection-no-block",
      "type": "noBlock",
      "description": "Checks that debug_connection is not a block",
      "module": "core",
      "match": { "contexts": ["/events"], "directive": "debug_connection" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#debug_connection",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "debug-points-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that debug_points is in an allowed context",
      "module": "core",
      "match": { "directive": "debug_points", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#debug_points",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-debug-points-arg-count",
      "type": "argCount",
      "description": "Checks that debug_points has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "debug_points",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#debug_points",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-debug-points-no-block",
      "type": "noBlock",
      "description": "Checks that debug_points is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "debug_points" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#debug_points",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "env-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that env is in an allowed context",
      "module": "core",
      "match": { "directive": "env", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#env",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-env-arg-count",
      "type": "argCount",
      "description": "Checks that env has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "env",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#env",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-env-no-block",
      "type": "noBlock",
      "description": "Checks that env is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "env" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#env",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "error-log-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that error_log is in an allowed context",
      "module": "core",
      "match": {
        "directive": "error_log",
        "params": {
          "allowed": [
            "/",
            "/http",
            "/mail",
            "/stream",
            "/*/server",
            "/*/server/**/location"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#error_log",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-error-log-arg-count",
      "type": "argCount",
      "description": "Checks that error_log has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": [
          "/",
          "/http",
          "/mail",
          "/stream",
          "/*/server",
          "/*/server/**/location"
        ],
        "directive": "error_log",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#error_log",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-error-log-no-block",
      "type": "noBlock",
      "description": "Checks that error_log is not a block",
      "module": "core",
      "match": {
        "contexts": [
          "/",
          "/http",
          "/mail",
          "/stream",
          "/*/server",
          "/*/server/**/location"
        ],
        "directive": "error_log"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#error_log",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "events-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that events is in an allowed context",
      "module": "core",
      "match": { "directive": "events", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#events",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-events-arg-count",
      "type": "argCount",
      "description": "Checks that events has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "events",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#events",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-include-arg-count",
      "type": "argCount",
      "description": "Checks that include has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": [],
        "directive": "include",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#include",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-include-no-block",
      "type": "noBlock",
      "description": "Checks that include is not a block",
      "module": "core",
      "match": { "contexts": [], "directive": "include" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#include",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "load-module-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that load_module is in an allowed context",
      "module": "core",
      "match": { "directive": "load_module", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#load_module",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-load-module-arg-count",
      "type": "argCount",
      "description": "Checks that load_module has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "load_module",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#load_module",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-load-module-no-block",
      "type": "noBlock",
      "description": "Checks that load_module is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "load_module" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#load_module",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "lock-file-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that lock_file is in an allowed context",
      "module": "core",
      "match": { "directive": "lock_file", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#lock_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-lock-file-arg-count",
      "type": "argCount",
      "description": "Checks that lock_file has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "lock_file",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#lock_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-lock-file-no-block",
      "type": "noBlock",
      "description": "Checks that lock_file is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "lock_file" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#lock_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "master-process-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that master_process is in an allowed context",
      "module": "core",
      "match": {
        "directive": "master_process",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#master_process",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-master-process-arg-count",
      "type": "argCount",
      "description": "Checks that master_process has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "master_process",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#master_process",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-master-process-no-block",
      "type": "noBlock",
      "description": "Checks that master_process is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "master_process" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#master_process",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "multi-accept-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that multi_accept is in an allowed context",
      "module": "core",
      "match": {
        "directive": "multi_accept",
        "params": { "allowed": ["/events"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#multi_accept",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-multi-accept-arg-count",
      "type": "argCount",
      "description": "Checks that multi_accept has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/events"],
        "directive": "multi_accept",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#multi_accept",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-multi-accept-no-block",
      "type": "noBlock",
      "description": "Checks that multi_accept is not a block",
      "module": "core",
      "match": { "contexts": ["/events"], "directive": "multi_accept" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#multi_accept",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "pcre-jit-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that pcre_jit is in an allowed context",
      "module": "core",
      "match": { "directive": "pcre_jit", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#pcre_jit",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-pcre-jit-arg-count",
      "type": "argCount",
      "description": "Checks that pcre_jit has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "pcre_jit",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#pcre_jit",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-pcre-jit-no-block",
      "type": "noBlock",
      "description": "Checks that pcre_jit is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "pcre_jit" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#pcre_jit",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "pid-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that pid is in an allowed context",
      "module": "core",
      "match": { "directive": "pid", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#pid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-pid-arg-count",
      "type": "argCount",
      "description": "Checks that pid has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "pid",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#pid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-pid-no-block",
      "type": "noBlock",
      "description": "Checks that pid is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "pid" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#pid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "ssl-engine-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that ssl_engine is in an allowed context",
      "module": "core",
      "match": { "directive": "ssl_engine", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#ssl_engine",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-ssl-engine-arg-count",
      "type": "argCount",
      "description": "Checks that ssl_engine has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "ssl_engine",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#ssl_engine",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-ssl-engine-no-block",
      "type": "noBlock",
      "description": "Checks that ssl_engine is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "ssl_engine" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#ssl_engine",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "thread-pool-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that thread_pool is in an allowed context",
      "module": "core",
      "match": { "directive": "thread_pool", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#thread_pool",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-thread-pool-arg-count",
      "type": "argCount",
      "description": "Checks that thread_pool has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "thread_pool",
        "params": { "min": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#thread_pool",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-thread-pool-no-block",
      "type": "noBlock",
      "description": "Checks that thread_pool is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "thread_pool" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#thread_pool",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "timer-resolution-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that timer_resolution is in an allowed context",
      "module": "core",
      "match": {
        "directive": "timer_resolution",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#timer_resolution",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-timer-resolution-arg-count",
      "type": "argCount",
      "description": "Checks that timer_resolution has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "timer_resolution",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#timer_resolution",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-timer-resolution-no-block",
      "type": "noBlock",
      "description": "Checks that timer_resolution is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "timer_resolution" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#timer_resolution",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "use-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that use is in an allowed context",
      "module": "core",
      "match": { "directive": "use", "params": { "allowed": ["/events"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#use",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-use-arg-count",
      "type": "argCount",
      "description": "Checks that use has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/events"],
        "directive": "use",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#use",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-use-no-block",
      "type": "noBlock",
      "description": "Checks that use is not a block",
      "module": "core",
      "match": { "contexts": ["/events"], "directive": "use" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#use",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "user-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that user is in an allowed context",
      "module": "core",
      "match": { "directive": "user", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#user",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-user-arg-count",
      "type": "argCount",
      "description": "Checks that user has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "user",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#user",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-user-no-block",
      "type": "noBlock",
      "description": "Checks that user is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "user" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#user",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-aio-requests-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_aio_requests is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_aio_requests",
        "params": { "allowed": ["/events"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_aio_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-aio-requests-arg-count",
      "type": "argCount",
      "description": "Checks that worker_aio_requests has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/events"],
        "directive": "worker_aio_requests",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_aio_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-aio-requests-no-block",
      "type": "noBlock",
      "description": "Checks that worker_aio_requests is not a block",
      "module": "core",
      "match": { "contexts": ["/events"], "directive": "worker_aio_requests" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_aio_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-connections-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_connections is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_connections",
        "params": { "allowed": ["/events"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_connections",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-connections-arg-count",
      "type": "argCount",
      "description": "Checks that worker_connections has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/events"],
        "directive": "worker_connections",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_connections",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-connections-no-block",
      "type": "noBlock",
      "description": "Checks that worker_connections is not a block",
      "module": "core",
      "match": { "contexts": ["/events"], "directive": "worker_connections" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_connections",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-cpu-affinity-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_cpu_affinity is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_cpu_affinity",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-cpu-affinity-arg-count",
      "type": "argCount",
      "description": "Checks that worker_cpu_affinity has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "worker_cpu_affinity",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-cpu-affinity-no-block",
      "type": "noBlock",
      "description": "Checks that worker_cpu_affinity is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "worker_cpu_affinity" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-priority-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_priority is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_priority",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_priority",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-priority-arg-count",
      "type": "argCount",
      "description": "Checks that worker_priority has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "worker_priority",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_priority",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-priority-no-block",
      "type": "noBlock",
      "description": "Checks that worker_priority is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "worker_priority" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_priority",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-processes-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_processes is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_processes",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_processes",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-processes-arg-count",
      "type": "argCount",
      "description": "Checks that worker_processes has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "worker_processes",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_processes",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-processes-no-block",
      "type": "noBlock",
      "description": "Checks that worker_processes is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "worker_processes" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_processes",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-rlimit-core-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_rlimit_core is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_rlimit_core",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_core",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-rlimit-core-arg-count",
      "type": "argCount",
      "description": "Checks that worker_rlimit_core has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "worker_rlimit_core",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_core",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-rlimit-core-no-block",
      "type": "noBlock",
      "description": "Checks that worker_rlimit_core is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "worker_rlimit_core" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_core",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-rlimit-nofile-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_rlimit_nofile is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_rlimit_nofile",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-rlimit-nofile-arg-count",
      "type": "argCount",
      "description": "Checks that worker_rlimit_nofile has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "worker_rlimit_nofile",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-rlimit-nofile-no-block",
      "type": "noBlock",
      "description": "Checks that worker_rlimit_nofile is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "worker_rlimit_nofile" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "worker-shutdown-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that worker_shutdown_timeout is in an allowed context",
      "module": "core",
      "match": {
        "directive": "worker_shutdown_timeout",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-shutdown-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that worker_shutdown_timeout has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "worker_shutdown_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-worker-shutdown-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that worker_shutdown_timeout is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "worker_shutdown_timeout" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "working-directory-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that working_directory is in an allowed context",
      "module": "core",
      "match": {
        "directive": "working_directory",
        "params": { "allowed": ["/"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#working_directory",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-working-directory-arg-count",
      "type": "argCount",
      "description": "Checks that working_directory has the correct number of arguments",
      "module": "core",
      "match": {
        "contexts": ["/"],
        "directive": "working_directory",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#working_directory",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "core-working-directory-no-block",
      "type": "noBlock",
      "description": "Checks that working_directory is not a block",
      "module": "core",
      "match": { "contexts": ["/"], "directive": "working_directory" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/ngx_core_module.html#working_directory",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "absolute-redirect-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that absolute_redirect is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "absolute_redirect",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#absolute_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-absolute-redirect-arg-count",
      "type": "argCount",
      "description": "Checks that absolute_redirect has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "absolute_redirect",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#absolute_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-absolute-redirect-no-block",
      "type": "noBlock",
      "description": "Checks that absolute_redirect is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "absolute_redirect"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#absolute_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "aio-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that aio is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "aio",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#aio",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-aio-arg-count",
      "type": "argCount",
      "description": "Checks that aio has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "aio",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#aio",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-aio-no-block",
      "type": "noBlock",
      "description": "Checks that aio is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "aio"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#aio",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "aio-write-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that aio_write is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "aio_write",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#aio_write",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-aio-write-arg-count",
      "type": "argCount",
      "description": "Checks that aio_write has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "aio_write",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#aio_write",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-aio-write-no-block",
      "type": "noBlock",
      "description": "Checks that aio_write is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "aio_write"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#aio_write",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "alias-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that alias is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "alias",
        "params": { "allowed": ["/http/server/**/location"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#alias",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-alias-arg-count",
      "type": "argCount",
      "description": "Checks that alias has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server/**/location"],
        "directive": "alias",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#alias",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-alias-no-block",
      "type": "noBlock",
      "description": "Checks that alias is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server/**/location"],
        "directive": "alias"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#alias",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "auth-delay-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that auth_delay is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "auth_delay",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#auth_delay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-auth-delay-arg-count",
      "type": "argCount",
      "description": "Checks that auth_delay has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "auth_delay",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#auth_delay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-auth-delay-no-block",
      "type": "noBlock",
      "description": "Checks that auth_delay is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "auth_delay"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#auth_delay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "chunked-transfer-encoding-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that chunked_transfer_encoding is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "chunked_transfer_encoding",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#chunked_transfer_encoding",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-chunked-transfer-encoding-arg-count",
      "type": "argCount",
      "description": "Checks that chunked_transfer_encoding has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "chunked_transfer_encoding",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#chunked_transfer_encoding",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-chunked-transfer-encoding-no-block",
      "type": "noBlock",
      "description": "Checks that chunked_transfer_encoding is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "chunked_transfer_encoding"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#chunked_transfer_encoding",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-body-buffer-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_body_buffer_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_body_buffer_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-buffer-size-arg-count",
      "type": "argCount",
      "description": "Checks that client_body_buffer_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_buffer_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-buffer-size-no-block",
      "type": "noBlock",
      "description": "Checks that client_body_buffer_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_buffer_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-body-in-file-only-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_body_in_file_only is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_body_in_file_only",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_file_only",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-in-file-only-arg-count",
      "type": "argCount",
      "description": "Checks that client_body_in_file_only has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_in_file_only",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_file_only",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-in-file-only-no-block",
      "type": "noBlock",
      "description": "Checks that client_body_in_file_only is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_in_file_only"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_file_only",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-body-in-single-buffer-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_body_in_single_buffer is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_body_in_single_buffer",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_single_buffer",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-in-single-buffer-arg-count",
      "type": "argCount",
      "description": "Checks that client_body_in_single_buffer has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_in_single_buffer",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_single_buffer",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-in-single-buffer-no-block",
      "type": "noBlock",
      "description": "Checks that client_body_in_single_buffer is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_in_single_buffer"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_single_buffer",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-body-temp-path-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_body_temp_path is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_body_temp_path",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_temp_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-temp-path-arg-count",
      "type": "argCount",
      "description": "Checks that client_body_temp_path has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_temp_path",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_temp_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-temp-path-no-block",
      "type": "noBlock",
      "description": "Checks that client_body_temp_path is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_temp_path"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_temp_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-body-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_body_timeout is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_body_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that client_body_timeout has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-body-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that client_body_timeout is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_body_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-header-buffer-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_header_buffer_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_header_buffer_size",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-header-buffer-size-arg-count",
      "type": "argCount",
      "description": "Checks that client_header_buffer_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "client_header_buffer_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-header-buffer-size-no-block",
      "type": "noBlock",
      "description": "Checks that client_header_buffer_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "client_header_buffer_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-header-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_header_timeout is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_header_timeout",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-header-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that client_header_timeout has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "client_header_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-header-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that client_header_timeout is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "client_header_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "client-max-body-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that client_max_body_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "client_max_body_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-max-body-size-arg-count",
      "type": "argCount",
      "description": "Checks that client_max_body_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_max_body_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-client-max-body-size-no-block",
      "type": "noBlock",
      "description": "Checks that client_max_body_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "client_max_body_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "connection-pool-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that connection_pool_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "connection_pool_size",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#connection_pool_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-connection-pool-size-arg-count",
      "type": "argCount",
      "description": "Checks that connection_pool_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "connection_pool_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#connection_pool_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-connection-pool-size-no-block",
      "type": "noBlock",
      "description": "Checks that connection_pool_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "connection_pool_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#connection_pool_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "default-type-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that default_type is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "default_type",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#default_type",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-default-type-arg-count",
      "type": "argCount",
      "description": "Checks that default_type has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "default_type",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#default_type",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-default-type-no-block",
      "type": "noBlock",
      "description": "Checks that default_type is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "default_type"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#default_type",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "directio-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that directio is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "directio",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#directio",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-directio-arg-count",
      "type": "argCount",
      "description": "Checks that directio has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "directio",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#directio",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-directio-no-block",
      "type": "noBlock",
      "description": "Checks that directio is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "directio"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#directio",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "directio-alignment-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that directio_alignment is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "directio_alignment",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#directio_alignment",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-directio-alignment-arg-count",
      "type": "argCount",
      "description": "Checks that directio_alignment has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "directio_alignment",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#directio_alignment",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-directio-alignment-no-block",
      "type": "noBlock",
      "description": "Checks that directio_alignment is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "directio_alignment"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#directio_alignment",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "disable-symlinks-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that disable_symlinks is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "disable_symlinks",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#disable_symlinks",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-disable-symlinks-arg-count",
      "type": "argCount",
      "description": "Checks that disable_symlinks has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "disable_symlinks",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#disable_symlinks",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-disable-symlinks-no-block",
      "type": "noBlock",
      "description": "Checks that disable_symlinks is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "disable_symlinks"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#disable_symlinks",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "error-page-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that error_page is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "error_page",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/server/**/location/if"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-error-page-arg-count",
      "type": "argCount",
      "description": "Checks that error_page has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "error_page",
        "params": { "min": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-error-page-no-block",
      "type": "noBlock",
      "description": "Checks that error_page is not a block",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "error_page"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "etag-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that etag is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "etag",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#etag",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-etag-arg-count",
      "type": "argCount",
      "description": "Checks that etag has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "etag",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#etag",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-etag-no-block",
      "type": "noBlock",
      "description": "Checks that etag is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "etag"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#etag",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that http is in an allowed context",
      "module": "http_core",
      "match": { "directive": "http", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#http",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-http-arg-count",
      "type": "argCount",
      "description": "Checks that http has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/"],
        "directive": "http",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#http",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "if-modified-since-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that if_modified_since is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "if_modified_since",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-if-modified-since-arg-count",
      "type": "argCount",
      "description": "Checks that if_modified_since has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "if_modified_since",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-if-modified-since-no-block",
      "type": "noBlock",
      "description": "Checks that if_modified_since is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "if_modified_since"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "ignore-invalid-headers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that ignore_invalid_headers is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "ignore_invalid_headers",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#ignore_invalid_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-ignore-invalid-headers-arg-count",
      "type": "argCount",
      "description": "Checks that ignore_invalid_headers has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "ignore_invalid_headers",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#ignore_invalid_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-ignore-invalid-headers-no-block",
      "type": "noBlock",
      "description": "Checks that ignore_invalid_headers is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "ignore_invalid_headers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#ignore_invalid_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "internal-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that internal is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "internal",
        "params": { "allowed": ["/http/server/**/location"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#internal",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-internal-arg-count",
      "type": "argCount",
      "description": "Checks that internal has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server/**/location"],
        "directive": "internal",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#internal",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-internal-no-block",
      "type": "noBlock",
      "description": "Checks that internal is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server/**/location"],
        "directive": "internal"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#internal",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "keepalive-disable-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that keepalive_disable is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "keepalive_disable",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-keepalive-disable-arg-count",
      "type": "argCount",
      "description": "Checks that keepalive_disable has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "keepalive_disable",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-keepalive-disable-no-block",
      "type": "noBlock",
      "description": "Checks that keepalive_disable is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "keepalive_disable"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_disable",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "keepalive-requests-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that keepalive_requests is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "keepalive_requests",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/upstream"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-keepalive-requests-arg-count",
      "type": "argCount",
      "description": "Checks that keepalive_requests has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "keepalive_requests",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-keepalive-requests-no-block",
      "type": "noBlock",
      "description": "Checks that keepalive_requests is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "keepalive_requests"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "keepalive-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that keepalive_timeout is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "keepalive_timeout",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/upstream"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-keepalive-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that keepalive_timeout has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "keepalive_timeout",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-keepalive-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that keepalive_timeout is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "keepalive_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "large-client-header-buffers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that large_client_header_buffers is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "large_client_header_buffers",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-large-client-header-buffers-arg-count",
      "type": "argCount",
      "description": "Checks that large_client_header_buffers has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "large_client_header_buffers",
        "params": { "min": 2, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-large-client-header-buffers-no-block",
      "type": "noBlock",
      "description": "Checks that large_client_header_buffers is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "large_client_header_buffers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "limit-except-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that limit_except is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "limit_except",
        "params": { "allowed": ["/http/server/**/location"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-limit-except-arg-count",
      "type": "argCount",
      "description": "Checks that limit_except has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server/**/location"],
        "directive": "limit_except",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "limit-rate-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that limit_rate is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "limit_rate",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/server/**/location/if"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-limit-rate-arg-count",
      "type": "argCount",
      "description": "Checks that limit_rate has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "limit_rate",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-limit-rate-no-block",
      "type": "noBlock",
      "description": "Checks that limit_rate is not a block",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "limit_rate"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "limit-rate-after-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that limit_rate_after is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "limit_rate_after",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/server/**/location/if"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-limit-rate-after-arg-count",
      "type": "argCount",
      "description": "Checks that limit_rate_after has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "limit_rate_after",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-limit-rate-after-no-block",
      "type": "noBlock",
      "description": "Checks that limit_rate_after is not a block",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "limit_rate_after"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "lingering-close-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that lingering_close is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "lingering_close",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_close",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-lingering-close-arg-count",
      "type": "argCount",
      "description": "Checks that lingering_close has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "lingering_close",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_close",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-lingering-close-no-block",
      "type": "noBlock",
      "description": "Checks that lingering_close is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "lingering_close"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_close",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "lingering-time-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that lingering_time is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "lingering_time",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_time",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-lingering-time-arg-count",
      "type": "argCount",
      "description": "Checks that lingering_time has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "lingering_time",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_time",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-lingering-time-no-block",
      "type": "noBlock",
      "description": "Checks that lingering_time is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "lingering_time"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_time",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "lingering-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that lingering_timeout is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "lingering_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-lingering-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that lingering_timeout has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "lingering_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-lingering-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that lingering_timeout is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "lingering_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#lingering_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "listen-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that listen is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "listen",
        "params": { "allowed": ["/http/server", "/stream/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#listen",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-listen-arg-count",
      "type": "argCount",
      "description": "Checks that listen has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server"],
        "directive": "listen",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#listen",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-listen-no-block",
      "type": "noBlock",
      "description": "Checks that listen is not a block",
      "module": "http_core",
      "match": { "contexts": ["/http/server"], "directive": "listen" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#listen",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "location-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that location is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "location",
        "params": { "allowed": ["/http/server", "/http/server/**/location"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#location",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-location-arg-count",
      "type": "argCount",
      "description": "Checks that location has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server", "/http/server/**/location"],
        "directive": "location",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#location",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "log-not-found-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that log_not_found is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "log_not_found",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#log_not_found",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-log-not-found-arg-count",
      "type": "argCount",
      "description": "Checks that log_not_found has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "log_not_found",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#log_not_found",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-log-not-found-no-block",
      "type": "noBlock",
      "description": "Checks that log_not_found is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "log_not_found"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#log_not_found",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "log-subrequest-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that log_subrequest is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "log_subrequest",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#log_subrequest",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-log-subrequest-arg-count",
      "type": "argCount",
      "description": "Checks that log_subrequest has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "log_subrequest",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#log_subrequest",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-log-subrequest-no-block",
      "type": "noBlock",
      "description": "Checks that log_subrequest is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "log_subrequest"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#log_subrequest",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "max-ranges-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that max_ranges is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "max_ranges",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#max_ranges",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-max-ranges-arg-count",
      "type": "argCount",
      "description": "Checks that max_ranges has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "max_ranges",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#max_ranges",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-max-ranges-no-block",
      "type": "noBlock",
      "description": "Checks that max_ranges is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "max_ranges"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#max_ranges",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "merge-slashes-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that merge_slashes is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "merge_slashes",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#merge_slashes",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-merge-slashes-arg-count",
      "type": "argCount",
      "description": "Checks that merge_slashes has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "merge_slashes",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#merge_slashes",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-merge-slashes-no-block",
      "type": "noBlock",
      "description": "Checks that merge_slashes is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "merge_slashes"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#merge_slashes",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "msie-padding-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that msie_padding is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "msie_padding",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_padding",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-msie-padding-arg-count",
      "type": "argCount",
      "description": "Checks that msie_padding has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "msie_padding",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_padding",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-msie-padding-no-block",
      "type": "noBlock",
      "description": "Checks that msie_padding is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "msie_padding"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_padding",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "msie-refresh-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that msie_refresh is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "msie_refresh",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_refresh",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-msie-refresh-arg-count",
      "type": "argCount",
      "description": "Checks that msie_refresh has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "msie_refresh",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_refresh",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-msie-refresh-no-block",
      "type": "noBlock",
      "description": "Checks that msie_refresh is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "msie_refresh"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#msie_refresh",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "open-file-cache-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that open_file_cache is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "open_file_cache",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-arg-count",
      "type": "argCount",
      "description": "Checks that open_file_cache has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-no-block",
      "type": "noBlock",
      "description": "Checks that open_file_cache is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "open-file-cache-errors-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that open_file_cache_errors is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "open_file_cache_errors",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-errors-arg-count",
      "type": "argCount",
      "description": "Checks that open_file_cache_errors has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache_errors",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-errors-no-block",
      "type": "noBlock",
      "description": "Checks that open_file_cache_errors is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache_errors"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "open-file-cache-min-uses-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that open_file_cache_min_uses is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "open_file_cache_min_uses",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_min_uses",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-min-uses-arg-count",
      "type": "argCount",
      "description": "Checks that open_file_cache_min_uses has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache_min_uses",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_min_uses",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-min-uses-no-block",
      "type": "noBlock",
      "description": "Checks that open_file_cache_min_uses is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache_min_uses"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_min_uses",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "open-file-cache-valid-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that open_file_cache_valid is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "open_file_cache_valid",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_valid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-valid-arg-count",
      "type": "argCount",
      "description": "Checks that open_file_cache_valid has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache_valid",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_valid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-open-file-cache-valid-no-block",
      "type": "noBlock",
      "description": "Checks that open_file_cache_valid is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "open_file_cache_valid"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#open_file_cache_valid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "output-buffers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that output_buffers is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "output_buffers",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#output_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-output-buffers-arg-count",
      "type": "argCount",
      "description": "Checks that output_buffers has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "output_buffers",
        "params": { "min": 2, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#output_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-output-buffers-no-block",
      "type": "noBlock",
      "description": "Checks that output_buffers is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "output_buffers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#output_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "port-in-redirect-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that port_in_redirect is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "port_in_redirect",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#port_in_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-port-in-redirect-arg-count",
      "type": "argCount",
      "description": "Checks that port_in_redirect has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "port_in_redirect",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#port_in_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-port-in-redirect-no-block",
      "type": "noBlock",
      "description": "Checks that port_in_redirect is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "port_in_redirect"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#port_in_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "postpone-output-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that postpone_output is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "postpone_output",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#postpone_output",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-postpone-output-arg-count",
      "type": "argCount",
      "description": "Checks that postpone_output has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "postpone_output",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#postpone_output",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-postpone-output-no-block",
      "type": "noBlock",
      "description": "Checks that postpone_output is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "postpone_output"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#postpone_output",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "read-ahead-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that read_ahead is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "read_ahead",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#read_ahead",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-read-ahead-arg-count",
      "type": "argCount",
      "description": "Checks that read_ahead has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "read_ahead",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#read_ahead",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-read-ahead-no-block",
      "type": "noBlock",
      "description": "Checks that read_ahead is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "read_ahead"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#read_ahead",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "recursive-error-pages-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that recursive_error_pages is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "recursive_error_pages",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#recursive_error_pages",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-recursive-error-pages-arg-count",
      "type": "argCount",
      "description": "Checks that recursive_error_pages has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "recursive_error_pages",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#recursive_error_pages",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-recursive-error-pages-no-block",
      "type": "noBlock",
      "description": "Checks that recursive_error_pages is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "recursive_error_pages"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#recursive_error_pages",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "request-pool-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that request_pool_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "request_pool_size",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#request_pool_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-request-pool-size-arg-count",
      "type": "argCount",
      "description": "Checks that request_pool_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "request_pool_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#request_pool_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-request-pool-size-no-block",
      "type": "noBlock",
      "description": "Checks that request_pool_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "request_pool_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#request_pool_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "reset-timedout-connection-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that reset_timedout_connection is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "reset_timedout_connection",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#reset_timedout_connection",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-reset-timedout-connection-arg-count",
      "type": "argCount",
      "description": "Checks that reset_timedout_connection has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "reset_timedout_connection",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#reset_timedout_connection",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-reset-timedout-connection-no-block",
      "type": "noBlock",
      "description": "Checks that reset_timedout_connection is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "reset_timedout_connection"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#reset_timedout_connection",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "resolver-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that resolver is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "resolver",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/upstream",
            "/stream",
            "/stream/server",
            "/stream/upstream"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-resolver-arg-count",
      "type": "argCount",
      "description": "Checks that resolver has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "resolver",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-resolver-no-block",
      "type": "noBlock",
      "description": "Checks that resolver is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "resolver"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "resolver-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that resolver_timeout is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "resolver_timeout",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/upstream",
            "/stream",
            "/stream/server",
            "/stream/upstream"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-resolver-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that resolver_timeout has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "resolver_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-resolver-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that resolver_timeout is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "resolver_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "root-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that root is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "root",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/server/**/location/if"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#root",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-root-arg-count",
      "type": "argCount",
      "description": "Checks that root has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "root",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#root",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-root-no-block",
      "type": "noBlock",
      "description": "Checks that root is not a block",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "root"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#root",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "satisfy-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that satisfy is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "satisfy",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#satisfy",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-satisfy-arg-count",
      "type": "argCount",
      "description": "Checks that satisfy has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "satisfy",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#satisfy",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-satisfy-no-block",
      "type": "noBlock",
      "description": "Checks that satisfy is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "satisfy"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#satisfy",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "send-lowat-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that send_lowat is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "send_lowat",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#send_lowat",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-send-lowat-arg-count",
      "type": "argCount",
      "description": "Checks that send_lowat has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "send_lowat",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#send_lowat",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-send-lowat-no-block",
      "type": "noBlock",
      "description": "Checks that send_lowat is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "send_lowat"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#send_lowat",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "send-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that send_timeout is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "send_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-send-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that send_timeout has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "send_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-send-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that send_timeout is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "send_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "sendfile-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that sendfile is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "sendfile",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/http/server/**/location/if"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-sendfile-arg-count",
      "type": "argCount",
      "description": "Checks that sendfile has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "sendfile",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-sendfile-no-block",
      "type": "noBlock",
      "description": "Checks that sendfile is not a block",
      "module": "http_core",
      "match": {
        "contexts": [
          "/http",
          "/http/server",
          "/http/server/**/location",
          "/http/server/**/location/if"
        ],
        "directive": "sendfile"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "sendfile-max-chunk-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that sendfile_max_chunk is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "sendfile_max_chunk",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile_max_chunk",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-sendfile-max-chunk-arg-count",
      "type": "argCount",
      "description": "Checks that sendfile_max_chunk has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "sendfile_max_chunk",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile_max_chunk",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-sendfile-max-chunk-no-block",
      "type": "noBlock",
      "description": "Checks that sendfile_max_chunk is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "sendfile_max_chunk"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile_max_chunk",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "server-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that server is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "server",
        "params": {
          "allowed": ["/http", "/http/upstream", "/stream", "/stream/upstream"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-arg-count",
      "type": "argCount",
      "description": "Checks that server has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "server",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "server-name-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that server_name is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "server_name",
        "params": { "allowed": ["/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-name-arg-count",
      "type": "argCount",
      "description": "Checks that server_name has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server"],
        "directive": "server_name",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-name-no-block",
      "type": "noBlock",
      "description": "Checks that server_name is not a block",
      "module": "http_core",
      "match": { "contexts": ["/http/server"], "directive": "server_name" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "server-name-in-redirect-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that server_name_in_redirect is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "server_name_in_redirect",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-name-in-redirect-arg-count",
      "type": "argCount",
      "description": "Checks that server_name_in_redirect has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "server_name_in_redirect",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-name-in-redirect-no-block",
      "type": "noBlock",
      "description": "Checks that server_name_in_redirect is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "server_name_in_redirect"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "server-names-hash-bucket-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that server_names_hash_bucket_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "server_names_hash_bucket_size",
        "params": { "allowed": ["/http"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_names_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-names-hash-bucket-size-arg-count",
      "type": "argCount",
      "description": "Checks that server_names_hash_bucket_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "server_names_hash_bucket_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_names_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-names-hash-bucket-size-no-block",
      "type": "noBlock",
      "description": "Checks that server_names_hash_bucket_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "server_names_hash_bucket_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_names_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "server-names-hash-max-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that server_names_hash_max_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "server_names_hash_max_size",
        "params": { "allowed": ["/http"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_names_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-names-hash-max-size-arg-count",
      "type": "argCount",
      "description": "Checks that server_names_hash_max_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "server_names_hash_max_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_names_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-names-hash-max-size-no-block",
      "type": "noBlock",
      "description": "Checks that server_names_hash_max_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "server_names_hash_max_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_names_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "server-tokens-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that server_tokens is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "server_tokens",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-tokens-arg-count",
      "type": "argCount",
      "description": "Checks that server_tokens has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "server_tokens",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-server-tokens-no-block",
      "type": "noBlock",
      "description": "Checks that server_tokens is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "server_tokens"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "subrequest-output-buffer-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that subrequest_output_buffer_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "subrequest_output_buffer_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#subrequest_output_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-subrequest-output-buffer-size-arg-count",
      "type": "argCount",
      "description": "Checks that subrequest_output_buffer_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "subrequest_output_buffer_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#subrequest_output_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-subrequest-output-buffer-size-no-block",
      "type": "noBlock",
      "description": "Checks that subrequest_output_buffer_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "subrequest_output_buffer_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#subrequest_output_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "tcp-nodelay-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that tcp_nodelay is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "tcp_nodelay",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-tcp-nodelay-arg-count",
      "type": "argCount",
      "description": "Checks that tcp_nodelay has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "tcp_nodelay",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-tcp-nodelay-no-block",
      "type": "noBlock",
      "description": "Checks that tcp_nodelay is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "tcp_nodelay"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "tcp-nopush-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that tcp_nopush is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "tcp_nopush",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nopush",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-tcp-nopush-arg-count",
      "type": "argCount",
      "description": "Checks that tcp_nopush has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "tcp_nopush",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nopush",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-tcp-nopush-no-block",
      "type": "noBlock",
      "description": "Checks that tcp_nopush is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "tcp_nopush"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nopush",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "try-files-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that try_files is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "try_files",
        "params": { "allowed": ["/http/server", "/http/server/**/location"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-try-files-arg-count",
      "type": "argCount",
      "description": "Checks that try_files has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server", "/http/server/**/location"],
        "directive": "try_files",
        "params": { "min": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-try-files-no-block",
      "type": "noBlock",
      "description": "Checks that try_files is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http/server", "/http/server/**/location"],
        "directive": "try_files"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#try_files",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "types-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that types is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "types",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-types-arg-count",
      "type": "argCount",
      "description": "Checks that types has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "types",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "types-hash-bucket-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that types_hash_bucket_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "types_hash_bucket_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-types-hash-bucket-size-arg-count",
      "type": "argCount",
      "description": "Checks that types_hash_bucket_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "types_hash_bucket_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-types-hash-bucket-size-no-block",
      "type": "noBlock",
      "description": "Checks that types_hash_bucket_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "types_hash_bucket_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "types-hash-max-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that types_hash_max_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "types_hash_max_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-types-hash-max-size-arg-count",
      "type": "argCount",
      "description": "Checks that types_hash_max_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "types_hash_max_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-types-hash-max-size-no-block",
      "type": "noBlock",
      "description": "Checks that types_hash_max_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "types_hash_max_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "underscores-in-headers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that underscores_in_headers is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "underscores_in_headers",
        "params": { "allowed": ["/http", "/http/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-underscores-in-headers-arg-count",
      "type": "argCount",
      "description": "Checks that underscores_in_headers has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "underscores_in_headers",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-underscores-in-headers-no-block",
      "type": "noBlock",
      "description": "Checks that underscores_in_headers is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http", "/http/server"],
        "directive": "underscores_in_headers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "variables-hash-bucket-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that variables_hash_bucket_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "variables_hash_bucket_size",
        "params": { "allowed": ["/http", "/stream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-variables-hash-bucket-size-arg-count",
      "type": "argCount",
      "description": "Checks that variables_hash_bucket_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "variables_hash_bucket_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-variables-hash-bucket-size-no-block",
      "type": "noBlock",
      "description": "Checks that variables_hash_bucket_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "variables_hash_bucket_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "variables-hash-max-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that variables_hash_max_size is in an allowed context",
      "module": "http_core",
      "match": {
        "directive": "variables_hash_max_size",
        "params": { "allowed": ["/http", "/stream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-variables-hash-max-size-arg-count",
      "type": "argCount",
      "description": "Checks that variables_hash_max_size has the correct number of arguments",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "variables_hash_max_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-core-variables-hash-max-size-no-block",
      "type": "noBlock",
      "description": "Checks that variables_hash_max_size is not a block",
      "module": "http_core",
      "match": {
        "contexts": ["/http"],
        "directive": "variables_hash_max_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_core_module.html#variables_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-bind-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_bind is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_bind",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_bind",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-bind-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_bind has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_bind",
        "params": { "min": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_bind",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-bind-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_bind is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_bind"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_bind",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-buffer-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_buffer_size is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_buffer_size",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-buffer-size-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_buffer_size has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_buffer_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-buffer-size-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_buffer_size is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_buffer_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-buffering-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_buffering is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_buffering",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-buffering-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_buffering has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_buffering",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-buffering-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_buffering is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_buffering"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-buffers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_buffers is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_buffers",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-buffers-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_buffers has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_buffers",
        "params": { "min": 2, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-buffers-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_buffers is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_buffers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-busy-buffers-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_busy_buffers_size is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_busy_buffers_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_busy_buffers_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-busy-buffers-size-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_busy_buffers_size has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_busy_buffers_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_busy_buffers_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-busy-buffers-size-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_busy_buffers_size is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_busy_buffers_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_busy_buffers_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-background-update-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_background_update is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_background_update",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_background_update",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-background-update-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_background_update has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_background_update",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_background_update",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-background-update-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_background_update is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_background_update"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_background_update",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-bypass-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_bypass is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_bypass",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_bypass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-bypass-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_bypass has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_bypass",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_bypass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-bypass-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_bypass is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_bypass"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_bypass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-convert-head-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_convert_head is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_convert_head",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-convert-head-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_convert_head has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_convert_head",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-convert-head-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_convert_head is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_convert_head"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_convert_head",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-key-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_key is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_key",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-key-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_key has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_key",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-key-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_key is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_key"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-lock-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_lock is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_lock",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-lock-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_lock has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_lock",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-lock-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_lock is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_lock"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-lock-age-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_lock_age is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_lock_age",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_age",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-lock-age-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_lock_age has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_lock_age",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_age",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-lock-age-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_lock_age is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_lock_age"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_age",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-lock-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_lock_timeout is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_lock_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-lock-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_lock_timeout has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_lock_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-lock-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_lock_timeout is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_lock_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_lock_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-max-range-offset-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_max_range_offset is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_max_range_offset",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_max_range_offset",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-max-range-offset-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_max_range_offset has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_max_range_offset",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_max_range_offset",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-max-range-offset-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_max_range_offset is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_max_range_offset"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_max_range_offset",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-methods-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_methods is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_methods",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_methods",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-methods-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_methods has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_methods",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_methods",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-methods-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_methods is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_methods"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_methods",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-min-uses-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_min_uses is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_min_uses",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_min_uses",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-min-uses-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_min_uses has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_min_uses",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_min_uses",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-min-uses-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_min_uses is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_min_uses"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_min_uses",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-path-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_path is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_path",
        "params": { "allowed": ["/http"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-path-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_path has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http"],
        "directive": "proxy_cache_path",
        "params": { "min": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-path-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_path is not a block",
      "module": "http_proxy",
      "match": { "contexts": ["/http"], "directive": "proxy_cache_path" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-purge-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_purge is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_purge",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_purge",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-purge-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_purge has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_purge",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_purge",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-purge-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_purge is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_purge"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_purge",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-revalidate-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_revalidate is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_revalidate",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_revalidate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-revalidate-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_revalidate has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_revalidate",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_revalidate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-revalidate-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_revalidate is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_revalidate"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_revalidate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-use-stale-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_use_stale is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_use_stale",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-use-stale-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_use_stale has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_use_stale",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-use-stale-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_use_stale is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_use_stale"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cache-valid-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cache_valid is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cache_valid",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-valid-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cache_valid has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_valid",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cache-valid-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cache_valid is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cache_valid"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-connect-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_connect_timeout is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_connect_timeout",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-connect-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_connect_timeout has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_connect_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-connect-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_connect_timeout is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_connect_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cookie-domain-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cookie_domain is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cookie_domain",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cookie-domain-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cookie_domain has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cookie_domain",
        "params": { "min": 1, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cookie-domain-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cookie_domain is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cookie_domain"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_domain",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cookie-flags-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cookie_flags is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cookie_flags",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_flags",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cookie-flags-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cookie_flags has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cookie_flags",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_flags",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cookie-flags-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cookie_flags is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cookie_flags"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_flags",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-cookie-path-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_cookie_path is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_cookie_path",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cookie-path-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_cookie_path has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cookie_path",
        "params": { "min": 1, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-cookie-path-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_cookie_path is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_cookie_path"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-force-ranges-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_force_ranges is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_force_ranges",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_force_ranges",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-force-ranges-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_force_ranges has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_force_ranges",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_force_ranges",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-force-ranges-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_force_ranges is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_force_ranges"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_force_ranges",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-headers-hash-bucket-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_headers_hash_bucket_size is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_headers_hash_bucket_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-headers-hash-bucket-size-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_headers_hash_bucket_size has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_headers_hash_bucket_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-headers-hash-bucket-size-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_headers_hash_bucket_size is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_headers_hash_bucket_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-headers-hash-max-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_headers_hash_max_size is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_headers_hash_max_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-headers-hash-max-size-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_headers_hash_max_size has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_headers_hash_max_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-headers-hash-max-size-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_headers_hash_max_size is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_headers_hash_max_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_headers_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-hide-header-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_hide_header is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_hide_header",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-hide-header-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_hide_header has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_hide_header",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-hide-header-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_hide_header is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_hide_header"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-http-version-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_http_version is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_http_version",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-http-version-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_http_version has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_http_version",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-http-version-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_http_version is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_http_version"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ignore-client-abort-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ignore_client_abort is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ignore_client_abort",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_client_abort",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ignore-client-abort-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ignore_client_abort has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ignore_client_abort",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_client_abort",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ignore-client-abort-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ignore_client_abort is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ignore_client_abort"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_client_abort",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ignore-headers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ignore_headers is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ignore_headers",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ignore-headers-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ignore_headers has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ignore_headers",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ignore-headers-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ignore_headers is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ignore_headers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-intercept-errors-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_intercept_errors is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_intercept_errors",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-intercept-errors-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_intercept_errors has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_intercept_errors",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-intercept-errors-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_intercept_errors is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_intercept_errors"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-limit-rate-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_limit_rate is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_limit_rate",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_limit_rate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-limit-rate-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_limit_rate has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_limit_rate",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_limit_rate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-limit-rate-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_limit_rate is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_limit_rate"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_limit_rate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-max-temp-file-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_max_temp_file_size is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_max_temp_file_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-max-temp-file-size-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_max_temp_file_size has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_max_temp_file_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-max-temp-file-size-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_max_temp_file_size is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_max_temp_file_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-method-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_method is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_method",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_method",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-method-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_method has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_method",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_method",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-method-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_method is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_method"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_method",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-next-upstream-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_next_upstream is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_next_upstream",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-next-upstream-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_next_upstream has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_next_upstream",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-next-upstream-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_next_upstream is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_next_upstream"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-next-upstream-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_next_upstream_timeout is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_next_upstream_timeout",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-next-upstream-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_next_upstream_timeout has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_next_upstream_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-next-upstream-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_next_upstream_timeout is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_next_upstream_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-next-upstream-tries-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_next_upstream_tries is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_next_upstream_tries",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-next-upstream-tries-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_next_upstream_tries has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_next_upstream_tries",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-next-upstream-tries-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_next_upstream_tries is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_next_upstream_tries"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream_tries",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-no-cache-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_no_cache is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_no_cache",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_no_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-no-cache-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_no_cache has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_no_cache",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_no_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-no-cache-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_no_cache is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_no_cache"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_no_cache",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-pass-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_pass is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_pass",
        "params": {
          "allowed": [
            "/http/server/**/location",
            "/http/server/**/location/if",
            "/http/server/**/location/limit_except",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_pass has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": [
          "/http/server/**/location",
          "/http/server/**/location/if",
          "/http/server/**/location/limit_except"
        ],
        "directive": "proxy_pass",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_pass is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": [
          "/http/server/**/location",
          "/http/server/**/location/if",
          "/http/server/**/location/limit_except"
        ],
        "directive": "proxy_pass"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-pass-header-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_pass_header is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_pass_header",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-header-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_pass_header has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_pass_header",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-header-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_pass_header is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_pass_header"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-pass-request-body-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_pass_request_body is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_pass_request_body",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_body",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-request-body-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_pass_request_body has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_pass_request_body",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_body",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-request-body-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_pass_request_body is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_pass_request_body"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_body",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-pass-request-headers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_pass_request_headers is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_pass_request_headers",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-request-headers-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_pass_request_headers has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_pass_request_headers",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-pass-request-headers-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_pass_request_headers is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_pass_request_headers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass_request_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-read-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_read_timeout is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_read_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-read-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_read_timeout has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_read_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-read-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_read_timeout is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_read_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-redirect-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_redirect is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_redirect",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-redirect-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_redirect has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_redirect",
        "params": { "min": 1, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-redirect-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_redirect is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_redirect"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-request-buffering-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_request_buffering is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_request_buffering",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-request-buffering-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_request_buffering has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_request_buffering",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-request-buffering-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_request_buffering is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_request_buffering"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-send-lowat-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_send_lowat is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_send_lowat",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_lowat",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-send-lowat-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_send_lowat has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_send_lowat",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_lowat",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-send-lowat-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_send_lowat is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_send_lowat"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_lowat",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-send-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_send_timeout is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_send_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-send-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_send_timeout has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_send_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-send-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_send_timeout is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_send_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-set-body-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_set_body is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_set_body",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_body",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-set-body-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_set_body has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_set_body",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_body",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-set-body-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_set_body is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_set_body"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_body",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-set-header-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_set_header is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_set_header",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-set-header-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_set_header has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_set_header",
        "params": { "min": 2, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-set-header-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_set_header is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_set_header"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-socket-keepalive-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_socket_keepalive is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_socket_keepalive",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_socket_keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-socket-keepalive-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_socket_keepalive has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_socket_keepalive",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_socket_keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-socket-keepalive-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_socket_keepalive is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_socket_keepalive"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_socket_keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-certificate-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_certificate is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_certificate",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-certificate-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_certificate has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_certificate",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-certificate-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_certificate is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_certificate"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-certificate-key-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_certificate_key is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_certificate_key",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-certificate-key-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_certificate_key has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_certificate_key",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-certificate-key-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_certificate_key is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_certificate_key"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-ciphers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_ciphers is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_ciphers",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_ciphers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-ciphers-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_ciphers has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_ciphers",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_ciphers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-ciphers-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_ciphers is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_ciphers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_ciphers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-crl-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_crl is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_crl",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_crl",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-crl-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_crl has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_crl",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_crl",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-crl-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_crl is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_crl"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_crl",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-name-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_name is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_name",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-name-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_name has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_name",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-name-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_name is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_name"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-password-file-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_password_file is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_password_file",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_password_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-password-file-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_password_file has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_password_file",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_password_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-password-file-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_password_file is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_password_file"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_password_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-protocols-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_protocols is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_protocols",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_protocols",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-protocols-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_protocols is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_protocols"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_protocols",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-server-name-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_server_name is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_server_name",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-server-name-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_server_name has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_server_name",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-server-name-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_server_name is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_server_name"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-session-reuse-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_session_reuse is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_session_reuse",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_session_reuse",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-session-reuse-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_session_reuse has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_session_reuse",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_session_reuse",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-session-reuse-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_session_reuse is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_session_reuse"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_session_reuse",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-trusted-certificate-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_trusted_certificate is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_trusted_certificate",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_trusted_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-trusted-certificate-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_trusted_certificate has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_trusted_certificate",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_trusted_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-trusted-certificate-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_trusted_certificate is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_trusted_certificate"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_trusted_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-verify-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_verify is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_verify",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-verify-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_verify has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_verify",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-verify-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_verify is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_verify"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-ssl-verify-depth-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_ssl_verify_depth is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_ssl_verify_depth",
        "params": {
          "allowed": [
            "/http",
            "/http/server",
            "/http/server/**/location",
            "/stream",
            "/stream/server"
          ]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify_depth",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-verify-depth-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_ssl_verify_depth has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_verify_depth",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify_depth",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-ssl-verify-depth-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_ssl_verify_depth is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_ssl_verify_depth"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_verify_depth",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-store-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_store is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_store",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-store-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_store has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_store",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-store-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_store is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_store"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-store-access-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_store_access is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_store_access",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store_access",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-store-access-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_store_access has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_store_access",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store_access",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-store-access-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_store_access is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_store_access"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_store_access",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-temp-file-write-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_temp_file_write_size is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_temp_file_write_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_file_write_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-temp-file-write-size-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_temp_file_write_size has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_temp_file_write_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_file_write_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-temp-file-write-size-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_temp_file_write_size is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_temp_file_write_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_file_write_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-temp-path-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_temp_path is in an allowed context",
      "module": "http_proxy",
      "match": {
        "directive": "proxy_temp_path",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-temp-path-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_temp_path has the correct number of arguments",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_temp_path",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-proxy-proxy-temp-path-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_temp_path is not a block",
      "module": "http_proxy",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "proxy_temp_path"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_path",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "upstream-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that upstream is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "upstream",
        "params": { "allowed": ["/http", "/stream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-upstream-arg-count",
      "type": "argCount",
      "description": "Checks that upstream has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http"],
        "directive": "upstream",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-server-arg-count",
      "type": "argCount",
      "description": "Checks that server has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "server",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-server-no-block",
      "type": "noBlock",
      "description": "Checks that server is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "server" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "zone-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that zone is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "zone",
        "params": { "allowed": ["/http/upstream", "/stream/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-zone-arg-count",
      "type": "argCount",
      "description": "Checks that zone has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "zone",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-zone-no-block",
      "type": "noBlock",
      "description": "Checks that zone is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "zone" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "state-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that state is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "state",
        "params": { "allowed": ["/http/upstream", "/stream/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#state",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-state-arg-count",
      "type": "argCount",
      "description": "Checks that state has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "state",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#state",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-state-no-block",
      "type": "noBlock",
      "description": "Checks that state is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "state" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#state",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "hash-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that hash is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "hash",
        "params": { "allowed": ["/http/upstream", "/stream/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-hash-arg-count",
      "type": "argCount",
      "description": "Checks that hash has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "hash",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-hash-no-block",
      "type": "noBlock",
      "description": "Checks that hash is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "hash" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#hash",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "ip-hash-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that ip_hash is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "ip_hash",
        "params": { "allowed": ["/http/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-ip-hash-arg-count",
      "type": "argCount",
      "description": "Checks that ip_hash has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "ip_hash",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-ip-hash-no-block",
      "type": "noBlock",
      "description": "Checks that ip_hash is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "ip_hash" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ip_hash",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "keepalive-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that keepalive is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "keepalive",
        "params": { "allowed": ["/http/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-keepalive-arg-count",
      "type": "argCount",
      "description": "Checks that keepalive has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "keepalive",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-keepalive-no-block",
      "type": "noBlock",
      "description": "Checks that keepalive is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "keepalive" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-keepalive-requests-arg-count",
      "type": "argCount",
      "description": "Checks that keepalive_requests has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "keepalive_requests",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-keepalive-requests-no-block",
      "type": "noBlock",
      "description": "Checks that keepalive_requests is not a block",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "keepalive_requests"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_requests",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-keepalive-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that keepalive_timeout has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "keepalive_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-keepalive-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that keepalive_timeout is not a block",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "keepalive_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "ntlm-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that ntlm is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "ntlm",
        "params": { "allowed": ["/http/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ntlm",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-ntlm-arg-count",
      "type": "argCount",
      "description": "Checks that ntlm has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "ntlm",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ntlm",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-ntlm-no-block",
      "type": "noBlock",
      "description": "Checks that ntlm is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "ntlm" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#ntlm",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "least-conn-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that least_conn is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "least_conn",
        "params": { "allowed": ["/http/upstream", "/stream/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-least-conn-arg-count",
      "type": "argCount",
      "description": "Checks that least_conn has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "least_conn",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-least-conn-no-block",
      "type": "noBlock",
      "description": "Checks that least_conn is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "least_conn" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "least-time-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that least_time is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "least_time",
        "params": { "allowed": ["/http/upstream", "/stream/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_time",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-least-time-arg-count",
      "type": "argCount",
      "description": "Checks that least_time has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "least_time",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_time",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-least-time-no-block",
      "type": "noBlock",
      "description": "Checks that least_time is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "least_time" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_time",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "queue-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that queue is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "queue",
        "params": { "allowed": ["/http/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-queue-arg-count",
      "type": "argCount",
      "description": "Checks that queue has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "queue",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-queue-no-block",
      "type": "noBlock",
      "description": "Checks that queue is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "queue" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#queue",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "random-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that random is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "random",
        "params": { "allowed": ["/http/upstream", "/stream/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#random",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-random-no-block",
      "type": "noBlock",
      "description": "Checks that random is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "random" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#random",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-resolver-arg-count",
      "type": "argCount",
      "description": "Checks that resolver has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "resolver",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#resolver",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-resolver-no-block",
      "type": "noBlock",
      "description": "Checks that resolver is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "resolver" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#resolver",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-resolver-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that resolver_timeout has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "resolver_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#resolver_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-resolver-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that resolver_timeout is not a block",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "resolver_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#resolver_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "sticky-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that sticky is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "sticky",
        "params": { "allowed": ["/http/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-sticky-arg-count",
      "type": "argCount",
      "description": "Checks that sticky has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "sticky",
        "params": { "min": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-sticky-no-block",
      "type": "noBlock",
      "description": "Checks that sticky is not a block",
      "module": "http_upstream",
      "match": { "contexts": ["/http/upstream"], "directive": "sticky" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "sticky-cookie-insert-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that sticky_cookie_insert is in an allowed context",
      "module": "http_upstream",
      "match": {
        "directive": "sticky_cookie_insert",
        "params": { "allowed": ["/http/upstream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky_cookie_insert",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-sticky-cookie-insert-arg-count",
      "type": "argCount",
      "description": "Checks that sticky_cookie_insert has the correct number of arguments",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "sticky_cookie_insert",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky_cookie_insert",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-upstream-sticky-cookie-insert-no-block",
      "type": "noBlock",
      "description": "Checks that sticky_cookie_insert is not a block",
      "module": "http_upstream",
      "match": {
        "contexts": ["/http/upstream"],
        "directive": "sticky_cookie_insert"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky_cookie_insert",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-listen-arg-count",
      "type": "argCount",
      "description": "Checks that listen has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream/server"],
        "directive": "listen",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#listen",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-listen-no-block",
      "type": "noBlock",
      "description": "Checks that listen is not a block",
      "module": "stream_core",
      "match": { "contexts": ["/stream/server"], "directive": "listen" },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#listen",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "preread-buffer-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that preread_buffer_size is in an allowed context",
      "module": "stream_core",
      "match": {
        "directive": "preread_buffer_size",
        "params": { "allowed": ["/stream", "/stream/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-preread-buffer-size-arg-count",
      "type": "argCount",
      "description": "Checks that preread_buffer_size has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "preread_buffer_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-preread-buffer-size-no-block",
      "type": "noBlock",
      "description": "Checks that preread_buffer_size is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "preread_buffer_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "preread-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that preread_timeout is in an allowed context",
      "module": "stream_core",
      "match": {
        "directive": "preread_timeout",
        "params": { "allowed": ["/stream", "/stream/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-preread-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that preread_timeout has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "preread_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-preread-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that preread_timeout is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "preread_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#preread_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "proxy-protocol-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that proxy_protocol_timeout is in an allowed context",
      "module": "stream_core",
      "match": {
        "directive": "proxy_protocol_timeout",
        "params": { "allowed": ["/stream", "/stream/server"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#proxy_protocol_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-proxy-protocol-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that proxy_protocol_timeout has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "proxy_protocol_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#proxy_protocol_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-proxy-protocol-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that proxy_protocol_timeout is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "proxy_protocol_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#proxy_protocol_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-resolver-arg-count",
      "type": "argCount",
      "description": "Checks that resolver has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "resolver",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-resolver-no-block",
      "type": "noBlock",
      "description": "Checks that resolver is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "resolver"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-resolver-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that resolver_timeout has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "resolver_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-resolver-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that resolver_timeout is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "resolver_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#resolver_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-server-arg-count",
      "type": "argCount",
      "description": "Checks that server has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream"],
        "directive": "server",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#server",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that stream is in an allowed context",
      "module": "stream_core",
      "match": { "directive": "stream", "params": { "allowed": ["/"] } },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#stream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-stream-arg-count",
      "type": "argCount",
      "description": "Checks that stream has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/"],
        "directive": "stream",
        "params": { "max": 0 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#stream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-tcp-nodelay-arg-count",
      "type": "argCount",
      "description": "Checks that tcp_nodelay has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "tcp_nodelay",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#tcp_nodelay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-tcp-nodelay-no-block",
      "type": "noBlock",
      "description": "Checks that tcp_nodelay is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream", "/stream/server"],
        "directive": "tcp_nodelay"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#tcp_nodelay",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-variables-hash-bucket-size-arg-count",
      "type": "argCount",
      "description": "Checks that variables_hash_bucket_size has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream"],
        "directive": "variables_hash_bucket_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-variables-hash-bucket-size-no-block",
      "type": "noBlock",
      "description": "Checks that variables_hash_bucket_size is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream"],
        "directive": "variables_hash_bucket_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_bucket_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-variables-hash-max-size-arg-count",
      "type": "argCount",
      "description": "Checks that variables_hash_max_size has the correct number of arguments",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream"],
        "directive": "variables_hash_max_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "stream-core-variables-hash-max-size-no-block",
      "type": "noBlock",
      "description": "Checks that variables_hash_max_size is not a block",
      "module": "stream_core",
      "match": {
        "contexts": ["/stream"],
        "directive": "variables_hash_max_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/stream/ngx_stream_core_module.html#variables_hash_max_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "geo-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that geo is in an allowed context",
      "module": "http_geo",
      "match": {
        "directive": "geo",
        "params": { "allowed": ["/http", "/stream"] }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_geo_module.html#geo",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-geo-geo-arg-count",
      "type": "argCount",
      "description": "Checks that geo has the correct number of arguments",
      "module": "http_geo",
      "match": {
        "contexts": ["/http"],
        "directive": "geo",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_geo_module.html#geo",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-bind-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_bind is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_bind",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_bind",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-bind-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_bind has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_bind",
        "params": { "min": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_bind",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-bind-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_bind is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_bind"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_bind",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-buffer-size-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_buffer_size is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_buffer_size",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-buffer-size-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_buffer_size has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_buffer_size",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-buffer-size-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_buffer_size is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_buffer_size"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_buffer_size",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-connect-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_connect_timeout is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_connect_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_connect_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-connect-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_connect_timeout has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_connect_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_connect_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-connect-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_connect_timeout is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_connect_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_connect_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-hide-header-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_hide_header is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_hide_header",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_hide_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-hide-header-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_hide_header has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_hide_header",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_hide_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-hide-header-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_hide_header is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_hide_header"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_hide_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ignore-headers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ignore_headers is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ignore_headers",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ignore_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ignore-headers-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ignore_headers has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ignore_headers",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ignore_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ignore-headers-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ignore_headers is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ignore_headers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ignore_headers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-intercept-errors-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_intercept_errors is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_intercept_errors",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_intercept_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-intercept-errors-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_intercept_errors has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_intercept_errors",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_intercept_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-intercept-errors-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_intercept_errors is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_intercept_errors"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_intercept_errors",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-next-upstream-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_next_upstream is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_next_upstream",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-next-upstream-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_next_upstream has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_next_upstream",
        "params": { "min": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-next-upstream-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_next_upstream is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_next_upstream"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-next-upstream-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_next_upstream_timeout is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_next_upstream_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-next-upstream-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_next_upstream_timeout has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_next_upstream_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-next-upstream-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_next_upstream_timeout is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_next_upstream_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-next-upstream-tries-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_next_upstream_tries is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_next_upstream_tries",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_tries",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-next-upstream-tries-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_next_upstream_tries has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_next_upstream_tries",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_tries",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-next-upstream-tries-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_next_upstream_tries is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_next_upstream_tries"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_next_upstream_tries",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-pass-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_pass is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_pass",
        "params": {
          "allowed": ["/http/server/**/location", "/http/server/**/location/if"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-pass-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_pass has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http/server/**/location", "/http/server/**/location/if"],
        "directive": "grpc_pass",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-pass-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_pass is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http/server/**/location", "/http/server/**/location/if"],
        "directive": "grpc_pass"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-pass-header-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_pass_header is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_pass_header",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-pass-header-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_pass_header has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_pass_header",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-pass-header-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_pass_header is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_pass_header"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_pass_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-read-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_read_timeout is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_read_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_read_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-read-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_read_timeout has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_read_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_read_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-read-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_read_timeout is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_read_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_read_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-send-timeout-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_send_timeout is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_send_timeout",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-send-timeout-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_send_timeout has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_send_timeout",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-send-timeout-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_send_timeout is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_send_timeout"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_send_timeout",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-set-header-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_set_header is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_set_header",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_set_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-set-header-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_set_header has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_set_header",
        "params": { "min": 2, "max": 2 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_set_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-set-header-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_set_header is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_set_header"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_set_header",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-socket-keepalive-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_socket_keepalive is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_socket_keepalive",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_socket_keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-socket-keepalive-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_socket_keepalive has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_socket_keepalive",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_socket_keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-socket-keepalive-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_socket_keepalive is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_socket_keepalive"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_socket_keepalive",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-certificate-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_certificate is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_certificate",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-certificate-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_certificate has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_certificate",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-certificate-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_certificate is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_certificate"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-certificate-key-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_certificate_key is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_certificate_key",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-certificate-key-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_certificate_key has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_certificate_key",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-certificate-key-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_certificate_key is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_certificate_key"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_certificate_key",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-ciphers-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_ciphers is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_ciphers",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_ciphers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-ciphers-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_ciphers has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_ciphers",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_ciphers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-ciphers-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_ciphers is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_ciphers"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_ciphers",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-crl-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_crl is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_crl",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_crl",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-crl-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_crl has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_crl",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_crl",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-crl-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_crl is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_crl"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_crl",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-name-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_name is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_name",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-name-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_name has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_name",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-name-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_name is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_name"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-password-file-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_password_file is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_password_file",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_password_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-password-file-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_password_file has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_password_file",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_password_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-password-file-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_password_file is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_password_file"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_password_file",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-protocols-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_protocols is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_protocols",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_protocols",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-protocols-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_protocols is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_protocols"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_protocols",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-server-name-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_server_name is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_server_name",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-server-name-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_server_name has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_server_name",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-server-name-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_server_name is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_server_name"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_server_name",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-session-reuse-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_session_reuse is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_session_reuse",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_session_reuse",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-session-reuse-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_session_reuse has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_session_reuse",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_session_reuse",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-session-reuse-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_session_reuse is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_session_reuse"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_session_reuse",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-trusted-certificate-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_trusted_certificate is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_trusted_certificate",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_trusted_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-trusted-certificate-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_trusted_certificate has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_trusted_certificate",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_trusted_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-trusted-certificate-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_trusted_certificate is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_trusted_certificate"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_trusted_certificate",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-verify-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_verify is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_verify",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-verify-arg-count",
      "type": "argCount",
      "description": "Checks that grpc_ssl_verify has the correct number of arguments",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_verify",
        "params": { "min": 1, "max": 1 }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "http-grpc-grpc-ssl-verify-no-block",
      "type": "noBlock",
      "description": "Checks that grpc_ssl_verify is not a block",
      "module": "http_grpc",
      "match": {
        "contexts": ["/http", "/http/server", "/http/server/**/location"],
        "directive": "grpc_ssl_verify"
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "name": "grpc-ssl-verify-depth-allowed-context",
      "type": "allowedInContext",
      "description": "Checks that grpc_ssl_verify_depth is in an allowed context",
      "module": "http_grpc",
      "match": {
        "directive": "grpc_ssl_verify_depth",
        "params": {
          "allowed": ["/http", "/http/server", "/http/server/**/location"]
        }
      },
      "action": {
        "links": [
          "https://nginx.org/en/docs/http/ngx_http_grpc_module.html#grpc_ssl_verify_depth",
          "https://docs.nginx.com/"
        ],
        "severity": "error"
      }
    },
    {
      "n