{
  "title": "nginx configuration checker",
  "human_url": "https://happytails.ai/en/developer-tools/nginx-configuration-checker/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/nginx-configuration-checker/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/nginx-configuration-checker.md",
  "content": "nginx configuration checker\nCheck nginx.conf and its include files for directives in the wrong place, wrong argument counts, removed settings, duplicate default servers, conflicting server names and proxy_pass mistakes without reloading nginx.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use nginx configuration checker\nPaste nginx.conf. Add each include file after a line ### file: path, such as ### file: conf.d/site.conf.\nChoose whether the first file is the main configuration, an http snippet or a server snippet.\nRun the check and review each finding with its file and line.\nDownload the JSON report, CSV or SARIF file.\nUseful next steps\nHTTP cache policy analyzer\nRedirect checker\nRegex tester\nWhat is checked\nHappytails.ai uses its own table of about 230 nginx directives written from the nginx documentation (nginx.org, read on 16 October 2026, nginx 1.28 and 1.29). Each directive is checked for the blocks it may appear in, telling an if block inside server from one inside location, its argument count, on or off values and repeats. include lines are resolved against the pasted files, with * patterns sorted like nginx does.\nConflict rules\nThe checker reports two default_server entries on one address and port, server_name values used twice on the same address, duplicate exact or prefix locations, proxy_pass with a URI inside a regex location, if or limit_except, listen ssl without a certificate, weak ssl_protocols, the removed ssl directive and add_header blocks that stop inheriting headers from the level above.\nLimits\nDirectives from third-party modules are listed as not covered rather than as errors. nginx itself is not run, so DNS names, certificate files, permissions and variables are not checked. A clean result means none of these rules found a problem.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "HTTP cache policy analyzer",
      "url": "https://happytails.ai/en/developer-tools/http-cache-policy-analyzer/"
    },
    {
      "name": "Redirect checker",
      "url": "https://happytails.ai/en/web-tools/redirect-checker/"
    },
    {
      "name": "Regex tester",
      "url": "https://happytails.ai/en/developer-tools/regex-tester/"
    }
  ],
  "tool": {
    "id": "nginx-configuration-checker",
    "category": "developer-tools",
    "built": true,
    "requirements": "Up to 1,000,000 characters, 200 files, 20,000 directives in one file and 100,000 after includes are expanded. Everything runs on your device in a background worker and nothing is uploaded. Downloads: JSON report, CSV findings and SARIF 2.1.0.",
    "implementation": {
      "fields": [
        {
          "key": "context",
          "label": "The first file is",
          "value": "main",
          "type": "select",
          "values": [
            "main",
            "http",
            "server"
          ]
        },
        {
          "key": "prefix",
          "label": "Configuration folder",
          "value": "/etc/nginx/",
          "type": "text",
          "help": "Relative include paths and file names are resolved against this folder."
        }
      ],
      "registrationFamily": "config-directive-linters",
      "inputMaxLength": 1000000,
      "inputErrorCode": "CONFIG_DIRECTIVE_LINTERS_TOO_LONG_NGINX",
      "note": "Checks nginx configuration files on your device without running nginx. Up to 1,000,000 characters and 200 files.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "nginx configuration",
        "placeholder": "events {}\nhttp {\n    server {\n        listen 80;\n    }\n}",
        "help": "Paste nginx.conf. Start each include file with ### file: and its path. Up to 1,000,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# nginx configuration checker\n\n- Human page: https://happytails.ai/en/developer-tools/nginx-configuration-checker/\n- Markdown: https://happytails.ai/en/developer-tools/nginx-configuration-checker.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/nginx-configuration-checker/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `nginx-configuration-checker` |\n| Category | developer-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nChecks nginx configuration files on your device without running nginx. Up to 1,000,000 characters and 200 files.\n\n### Inputs and settings\n\nText input: nginx configuration.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\nevents {}\nhttp {\n    server {\n        listen 80;\n    }\n}\n```\n\nPaste nginx.conf. Start each include file with ### file: and its path. Up to 1,000,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `context` | The first file is | select | \"main\" | Allowed: main, http, server |\n| `prefix` | Configuration folder | text | \"/etc/nginx/\" |  |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nUp to 1,000,000 characters, 200 files, 20,000 directives in one file and 100,000 after includes are expanded. Everything runs on your device in a background worker and nothing is uploaded. Downloads: JSON report, CSV findings and SARIF 2.1.0.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"nginx-configuration-checker\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"Up to 1,000,000 characters, 200 files, 20,000 directives in one file and 100,000 after includes are expanded. Everything runs on your device in a background worker and nothing is uploaded. Downloads: JSON report, CSV findings and SARIF 2.1.0.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"context\",\n        \"label\": \"The first file is\",\n        \"value\": \"main\",\n        \"type\": \"select\",\n        \"values\": [\n          \"main\",\n          \"http\",\n          \"server\"\n        ]\n      },\n      {\n        \"key\": \"prefix\",\n        \"label\": \"Configuration folder\",\n        \"value\": \"/etc/nginx/\",\n        \"type\": \"text\",\n        \"help\": \"Relative include paths and file names are resolved against this folder.\"\n      }\n    ],\n    \"registrationFamily\": \"config-directive-linters\",\n    \"inputMaxLength\": 1000000,\n    \"inputErrorCode\": \"CONFIG_DIRECTIVE_LINTERS_TOO_LONG_NGINX\",\n    \"note\": \"Checks nginx configuration files on your device without running nginx. Up to 1,000,000 characters and 200 files.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"nginx configuration\",\n      \"placeholder\": \"events {}\\nhttp {\\n    server {\\n        listen 80;\\n    }\\n}\",\n      \"help\": \"Paste nginx.conf. Start each include file with ### file: and its path. Up to 1,000,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCheck nginx.conf and its include files for directives in the wrong place, wrong argument counts, removed settings, duplicate default servers, conflicting server names and proxy\\_pass mistakes without reloading nginx.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use nginx configuration checker\n\n1. Paste nginx.conf. Add each include file after a line ### file: path, such as ### file: conf.d/site.conf.\n2. Choose whether the first file is the main configuration, an http snippet or a server snippet.\n3. Run the check and review each finding with its file and line.\n4. Download the JSON report, CSV or SARIF file.\n\n## Useful next steps\n\n- [HTTP cache policy analyzer](https://happytails.ai/en/developer-tools/http-cache-policy-analyzer/) ([Markdown](https://happytails.ai/en/developer-tools/http-cache-policy-analyzer.md))\n\n- [Redirect checker](https://happytails.ai/en/web-tools/redirect-checker/) ([Markdown](https://happytails.ai/en/web-tools/redirect-checker.md))\n\n- [Regex tester](https://happytails.ai/en/developer-tools/regex-tester/) ([Markdown](https://happytails.ai/en/developer-tools/regex-tester.md))\n\n## What is checked\n\nHappytails.ai uses its own table of about 230 nginx directives written from the nginx documentation (nginx.org, read on 16 October 2026, nginx 1.28 and 1.29). Each directive is checked for the blocks it may appear in, telling an if block inside server from one inside location, its argument count, on or off values and repeats. include lines are resolved against the pasted files, with \\* patterns sorted like nginx does.\n\n### Conflict rules\n\nThe checker reports two default\\_server entries on one address and port, server\\_name values used twice on the same address, duplicate exact or prefix locations, proxy\\_pass with a URI inside a regex location, if or limit\\_except, listen ssl without a certificate, weak ssl\\_protocols, the removed ssl directive and add\\_header blocks that stop inheriting headers from the level above.\n\n### Limits\n\nDirectives from third-party modules are listed as not covered rather than as errors. nginx itself is not run, so DNS names, certificate files, permissions and variables are not checked. A clean result means none of these rules found a problem.\n"
}