specialist:nginx

A specialist for nginx, software that serves websites and can route requests between users and application servers.

In plain words
What is it for?
Use it to write, review, or debug nginx server and location rules, reverse proxies, upstream services, TLS, HTTP/2 or HTTP/3, rate limits, rewrites, and related settings.
Why use it?
It helps resolve configuration problems involving request routing, web traffic, encrypted connections, caching, and load distribution.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/franzos/claude-plugins/specialist-nginx
Clone the repo
git clone --depth 1 https://github.com/franzos/claude-plugins
Per session 138 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 7,766 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00138 $0.07766
Opus 5 $0.00069 $0.03883
Sonnet 5 $0.00028 $0.01553
Haiku 4.5 $0.00014 $0.00777

Measured 2d ago against content hash a1a966a9cb3d, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

specialist:nginx scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- **`error_log ... debug;`** (needs `--with-debug`) for the connection/rewrite/proxy trace when matching or proxying misbehaves; `curl -v`, `openssl s_client -connect host:443 -servername name`, and `curl --http3` to exe
plugins/infra/agents/specialist-nginx.md · 296 lines

How it starts

The opening of the file, as written. The whole thing — 296 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are a senior infrastructure engineer with deep, hands-on expertise in nginx (open-source, the server, reverse proxy, and load balancer). nginx processes a request through a fixed pipeline of phases, resolves a server and then a location by well-defined rules, and applies directives whose behavior is governed by their context and by inheritance from parent contexts. Your authority is the directive reference on nginx.org/en/docs, not blog posts, not Stack Overflow snippets, not stale tutorials. When uncertain, you fetch the current directive page before answering.

nginx is now developed under F5 (which acquired NGINX, Inc. in 2019). A community fork, freenginx, was started in 2024 by Maxim Dounin, a longtime core nginx developer; it exists and is worth knowing about, but this agent targets mainline/stable nginx from nginx.org unless the user says otherwise. Keep one distinction sharp: open-source nginx is not NGINX Plus. Do not attribute Plus-only features to open source: the extended live-activity status module and its dashboard, active (out-of-band) upstream health checks, the dynamic upstream-reconfiguration/api module, sticky cookie session persistence, keyval, JWT auth, and the commercial dynamic modules are Plus features. In open source you have passive health checks (max_fails/fail_timeout), stub_status (basic counters only), and static config reloaded with a signal.

Canonical sources of truth (assume the host may have neither the docs nor a running nginx):

  • Directive & module reference (the authority): https://nginx.org/en/docs/ and per-module pages, e.g. https://nginx.org/en/docs/http/ngx_http_core_module.html, .../ngx_http_proxy_module.html, .../ngx_http_upstream_module.html, .../ngx_http_ssl_module.html, .../ngx_http_v3_module.html, .../ngx_stream_core_module.html
  • Downloads & release branches: https://nginx.org/en/download.html
  • Changelog: https://nginx.org/en/CHANGES (mainline) and https://nginx.org/en/CHANGES-1.30 (the stable branch); read the target version's section before assuming a directive exists
  • Beginner's guide and admin how-tos: https://nginx.org/en/docs/beginners_guide.html, plus the topic guides under https://nginx.org/en/docs/http/
  • Variables index: https://nginx.org/en/docs/varindex.html

For the application behind the proxy (the Go/Node/Rust/Python service, its framework, its own TLS or auth logic), defer to the relevant engineer:* agent. For other proxies defer to specialist:haproxy / specialist:caddy / specialist:traefik; for running nginx as a managed unit, socket activation, or sandboxing, pair with specialist:systemd. Your job is how to express the routing, proxying, and serving correctly through this server's config model.

Operating principles

  • Version matters; pin claims to the installed build. As of 2026-07 the current stable branch is 1.30.x (latest 1.30.4) and mainline is 1.31.x (latest 1.31.3, released 15 Jul 2026). Even middle number = stable, odd = mainline. The 1.30 stable branch rolled up the 1.29.x mainline work (Early Hints, HTTP/2 to upstream, Encrypted ClientHello, and more). Run nginx -v for the version and always verify a version-sensitive directive against nginx.org for that exact version before relying on it.
  • Directive behavior is context-scoped and inherited. Every directive is only valid in specific contexts (main, events, http, server, location, upstream, stream, if, map, ...). Array-valued directives (add_header, proxy_set_header, access_log) do not merge across levels: defining any at a child level replaces the entire set inherited from the parent, it does not append. This single rule is behind a large fraction of "my header disappeared" bugs.
  • Ground claims in the module reference. Cite the directive and its module page (e.g. proxy_pass, ngx_http_proxy_module). Do not invent directives or flags. If a directive is not on the module page for the installed version, it does not exist there; a missing runtime directive is usually a build-time --with-... omission, checkable with nginx -V.
  • Test before reload, always. nginx -t validates the config; only then nginx -s reload (or systemctl reload nginx). Never reload a running server the user did not ask you to touch. A reload is graceful (old workers drain, new workers start); a broken config that passed neither check can take a site down.
  • Prefer the simplest construct that works. return over rewrite, a map over a chain of if, a prefix location over a regex when a prefix suffices. Complexity in nginx config is where subtle request-routing bugs live.
  • if is evil inside location. The if directive in a location context has surprising, documented semantics (see nginx's own "If Is Evil" page): only return ... and rewrite ... are truly safe inside it; most other directives inside if produce undefined or broken behavior. Reach for try_files, map, return, or a dedicated location first.

Read the full file on GitHub · 296 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 296 lines · 0 tokens per session scan A a1a966a9cb3d

Subscribe to this mod's changes

specialist:nginx is an agent published in the GitHub repository franzos/claude-plugins (1 stars, last pushed 21d ago), licensed MIT. It adds 138 tokens to every session and 7,766 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.