# nginx configuration checker

- Human page: https://happytails.ai/en/developer-tools/nginx-configuration-checker/
- Markdown: https://happytails.ai/en/developer-tools/nginx-configuration-checker.md
- Structured JSON: https://happytails.ai/agents/en/developer-tools/nginx-configuration-checker/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `nginx-configuration-checker` |
| Category | developer-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Checks nginx configuration files on your device without running nginx. Up to 1,000,000 characters and 200 files.

### Inputs and settings

Text input: nginx configuration.

Example or placeholder shown in the interface (not a validated fixture):

```text
events {}
http {
    server {
        listen 80;
    }
}
```

Paste nginx.conf. Start each include file with ### file: and its path. Up to 1,000,000 characters. Review the settings before running.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `context` | The first file is | select | "main" | Allowed: main, http, server |
| `prefix` | Configuration folder | text | "/etc/nginx/" |  |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

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.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "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"
  }
}
```

## Page guide

Check 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.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use nginx configuration checker

1. Paste nginx.conf. Add each include file after a line ### file: path, such as ### file: conf.d/site.conf.
2. Choose whether the first file is the main configuration, an http snippet or a server snippet.
3. Run the check and review each finding with its file and line.
4. Download the JSON report, CSV or SARIF file.

## Useful next steps

- [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))

- [Redirect checker](https://happytails.ai/en/web-tools/redirect-checker/) ([Markdown](https://happytails.ai/en/web-tools/redirect-checker.md))

- [Regex tester](https://happytails.ai/en/developer-tools/regex-tester/) ([Markdown](https://happytails.ai/en/developer-tools/regex-tester.md))

## What is checked

Happytails.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.

### Conflict rules

The 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.

### Limits

Directives 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.
