~/tools/nginx-config-analyzer
StableBrowser-onlyv2.0

NGINX Config Analyzer

Paste one or more NGINX config files and get a scored security, performance, and reliability audit across 35+ context-aware rules. Supports multi-file configs with include resolution and a request flow simulator. Your configuration is analyzed locally — never uploaded.

#nginx#security#devops#infrastructure
🔒

Your NGINX configuration is analyzed locally in your browser and is never uploaded to any server.

⚠

Static analysis only. Always verify with nginx -t and nginx -T before applying changes.

Load sample:
nginx.conf
Overall score
0
Risky
19 findings · 1 file
1 critical1 high12 medium5 low
🛡Security
47

5 findings · −53 pts

⚡Performance
86

2 findings · −14 pts

🔀Reverse Proxy
52

8 findings · −48 pts

📡Reliability
84

4 findings · −16 pts

🔧Maintainability
100

0 findings

Findings (19 shown of 19)

What this analyzer checks

This analyzer builds an AST from your NGINX configuration, then runs 35+ context-aware rules. Rules understand scope — HSTS only fires when an HTTPS listener exists, proxy header rules only apply when proxy_pass is present, upstream keepalive rules only apply when upstream blocks are defined.

Supports multi-file configs — add included files as additional tabs and the analyzer links them together. The request flow simulator tests server block selection, location matching, and proxy_pass routing without sending any traffic.

🛡 Security

  • —HSTS on HTTPS servers
  • —X-Frame-Options / CSP frame-ancestors
  • —X-Content-Type-Options nosniff
  • —Content-Security-Policy
  • —server_tokens off
  • —Legacy TLS 1.0/1.1
  • —ssl_protocols missing
  • —Weak ssl_ciphers
  • —ssl_session_cache
  • —autoindex on
  • —Dotfile exposure (.git, .env)
  • —HTTP to HTTPS redirect

⚡ Performance

  • —worker_processes auto
  • —worker_connections sizing
  • —gzip / Brotli compression
  • —client_max_body_size
  • —sendfile / tcp_nopush / tcp_nodelay
  • —HTTP/2 on TLS
  • —proxy_read_timeout
  • —Upstream keepalive

🔀 Reverse Proxy

  • —Host header forwarding
  • —X-Real-IP
  • —X-Forwarded-For
  • —X-Forwarded-Proto
  • —proxy_http_version 1.1 with keepalive
  • —WebSocket Upgrade/Connection headers
  • —proxy_pass variable without resolver
  • —proxy_buffering global disable

📡 Reliability

  • —error_log
  • —access_log with upstream timing
  • —proxy_next_upstream
  • —max_fails/fail_timeout on upstream servers
  • —default_server block
  • —error_page for 502/503/504

How to validate fixes safely

nginx -t && nginx -T | head -50
systemctl reload nginx
curl -sI https://yourdomain.com | grep -E "Strict-Transport|X-Frame|X-Content-Type"

Related guides

FAQ

Is my NGINX config uploaded anywhere?▼

No. All parsing and analysis runs in JavaScript in your browser. No data is sent to any server. Open DevTools → Network while pasting and you will see zero outbound requests.

Can this replace nginx -t?▼

No. nginx -t validates syntax against your actual NGINX binary and loaded modules. This tool provides semantic analysis — finding issues that are syntactically valid but operationally or security-problematic. Use both.

Does it support multiple config files?▼

Yes. Click + to add file tabs. Name them to match your include paths (e.g. conf.d/api.conf). The analyzer resolves include directives by matching against provided filenames.

Can it detect security issues?▼

Yes — missing security headers, TLS misconfiguration, weak ciphers, autoindex exposure, unprotected dotfiles, rate limiting gaps, HSTS on HTTPS servers. All rules are context-aware.

Can it analyze reverse proxy configs?▼

Yes. Proxy header rules only fire when proxy_pass is present. Upstream keepalive rules apply when upstream blocks exist. WebSocket header rules fire only when WebSocket-like routes are detected.

How accurate is the request flow test?▼

The simulator handles exact, prefix, ^~, regex, and default location matching with correct NGINX priority order. It cannot emulate complex rewrites, variable-based routing, map/geo lookups, or Lua/njs. Confidence level (definite/probable/uncertain) is shown with each result.