Skip to main content

Your CLAUDE.md Is Public: Block AI Agent Files in NGINX


by Danila Vershinin, October 29, 2026

AI coding agents leave CLAUDE.md, AGENTS.md and prompt files in your web root. Block them in NGINX and auto-ban the scanners that probe for them.

Read More...

Ask Your AI Agent About Your NGINX Servers: Amplify MCP


by Danila Vershinin, October 22, 2026

GetPageSpeed Amplify now has a hosted MCP server. Connect Claude Code, Cursor, VS Code or Codex and ask about NGINX CVEs, gixy config findings, PHP exposure, metrics and uptime in plain language.

Read More...

ngx_pagespeed Won’t Build on Modern NGINX? Install It


by Danila Vershinin, October 15, 2026

The original ngx_pagespeed fails to compile on NGINX 1.23+ and fails to load on modern glibc. Here is why, and how to install a version-matched nginx-module-pagespeed on Rocky Linux 9, AlmaLinux 9 and RHEL 9 with one dnf command, with AVIF and aarch64 support.

Read More...

zlib-ng vs zlib in NGINX: Benchmark and Methodology


by Danila Vershinin, October 3, 2026

How we benchmarked zlib-ng against stock zlib the way NGINX really uses it: chunked streaming harness, ab end-to-end runs, x86_64 and aarch64 numbers, the gzip_http_version trap, and why level 1 users should switch to level 2.

Read More...

NGINX Module Version Mismatch: When APT Lets It Through


by Danila Vershinin, October 1, 2026

An NGINX module built for 1.29.8 will not load into 1.31.5, and NGINX says so. The question is whether your package manager knew first. We reproduced a stale nginx-abi label letting APT install a mismatched pair, wedging dpkg and arming the next restart as an outage.

Read More...

NGINX Accept-Language Redirects: No Lua Required


by Danila Vershinin, September 26, 2026

Redirect visitors to /en/, /fr/ or /de/ based on the Accept-Language header with the set_from_accept_language directive from nginx-module-accept-language. No Lua, njs or regex maps: VM-tested configs, cookie override, SEO-safe 302 redirects.

Read More...

NGINX QUIC reuseport: HTTP/3 Silently Breaks Without It


by Danila Vershinin, September 17, 2026

Multi-worker NGINX HTTP/3 silently fails without reuseport on the QUIC listener: ~30% of connections fall back to HTTP/2 with nothing in the error log. One ss command diagnoses it; the fix needs a restart, not a reload.

Read More...

ECH Without Padding Is a Lookup Table


by Danila Vershinin, September 10, 2026

ECH hides the SNI, yet every vhost we measured, 8 of 8 in the lab and 5 of 5 in production, was identifiable from server handshake record sizes alone. Here is the measured leak, and the one-directive NGINX module that closes it.

Read More...

NGINX Directive Execution Order: The 11 Request Phases


by Danila Vershinin, September 7, 2026

How NGINX directive execution order really works: the 11 request phases, why return beats deny, why a server rewrite changes your location, and where third-party directives run. Every example curl-verified.

Read More...

NGINX proxy_pass: URI Rewriting, Variables, and DNS Gotchas


by Danila Vershinin,

The exact proxy_pass URI rewriting rules, variable resolution gotchas, and three verified ways to fix NGINX’s frozen-DNS problem, including the upstream-jdomain module.

Read More...