<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nginx Learning</title>
    <link>https://foxipa.com/en/nginx/learn/</link>
    <description>A practical NGINX learning path from server foundations to production architectures, traffic control, and debugging.</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <atom:link href="https://foxipa.com/en/nginx/learn/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>1.1 The Web Server Landscape: Where NGINX Fits</title>
      <link>https://foxipa.com/en/nginx/learn/web-server-landscape/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/web-server-landscape/</guid>
      <description>Concept-heavy, hands-light. The hands arrive in 1.2 — this lesson builds the vocabulary.</description>
    </item>
    <item>
      <title>1.2 Installing NGINX: Every Path That Matters</title>
      <link>https://foxipa.com/en/nginx/learn/installing-nginx/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/installing-nginx/</guid>
      <description>Hands-on: you will install (or at least deeply understand) four different installation paths and know when each is right.</description>
    </item>
    <item>
      <title>1.3 Anatomy of an Installation</title>
      <link>https://foxipa.com/en/nginx/learn/anatomy-of-an-installation/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/anatomy-of-an-installation/</guid>
      <description>You will learn to read nginx -V like a radiologist reads an X-ray, and to locate every file an NGINX owns on any machine in 60 seconds.</description>
    </item>
    <item>
      <title>1.4 The Architecture: Master, Workers, and the Event Loop</title>
      <link>https://foxipa.com/en/nginx/learn/architecture-master-workers-event-loop/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/architecture-master-workers-event-loop/</guid>
      <description>The most important conceptual lesson in the series. Everything from reload semantics to load-balancer behavior traces back to what you learn here.</description>
    </item>
    <item>
      <title>1.5 Signals, Reloads, and Zero-Downtime</title>
      <link>https://foxipa.com/en/nginx/learn/signals-reloads-zero-downtime/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/signals-reloads-zero-downtime/</guid>
      <description>The operational climax of Module 1: how to command a live NGINX, and the exact anatomy of a zero-downtime reload — verified line by line against a running server.</description>
    </item>
    <item>
      <title>2.1 The Configuration Language</title>
      <link>https://foxipa.com/en/nginx/learn/configuration-language/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/configuration-language/</guid>
      <description>The grammar of everything that follows. Short lesson, permanent payoff.</description>
    </item>
    <item>
      <title>2.2 Server Blocks &amp; Virtual Hosts</title>
      <link>https://foxipa.com/en/nginx/learn/server-blocks-virtual-hosts/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/server-blocks-virtual-hosts/</guid>
      <description>One IP, one port, many sites: the exact algorithm NGINX uses to pick a server{}, with every claim verified against a running server.</description>
    </item>
    <item>
      <title>2.3 The Location-Matching Algorithm</title>
      <link>https://foxipa.com/en/nginx/learn/location-matching-algorithm/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/location-matching-algorithm/</guid>
      <description>The most quizzed, most misquoted mechanism in NGINX. After this lesson you will never guess again — you will trace.</description>
    </item>
    <item>
      <title>2.4 Variables and map</title>
      <link>https://foxipa.com/en/nginx/learn/variables-and-map/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/variables-and-map/</guid>
      <description>Configuration that computes. NGINX has no if you should love (Lesson 11.2 explains why), but it has something better: variables with per-request values and map, the cleanest dispatch in town.</description>
    </item>
    <item>
      <title>2.5 Directive Inheritance: The One Rule</title>
      <link>https://foxipa.com/en/nginx/learn/directive-inheritance/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/directive-inheritance/</guid>
      <description>&#34;Why did my header disappear?&#34; has exactly one answer, and after this lesson you&#39;ll never ask it again.</description>
    </item>
    <item>
      <title>2.6 Includes, Organization, and nginx -T</title>
      <link>https://foxipa.com/en/nginx/learn/includes-organization/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/includes-organization/</guid>
      <description>The mechanics are done; now the engineering. Configs are programs, and programs need architecture, imports, and a debugger. NGINX ships all three.</description>
    </item>
    <item>
      <title>3.1 root vs alias: The Filesystem Mapping, Settled</title>
      <link>https://foxipa.com/en/nginx/learn/root-and-alias/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/root-and-alias/</guid>
      <description>Two directives, one job: turn a URI into a file path. One appends, one replaces — and every confusion you&#39;ve ever had reduces to that difference plus a trailing slash.</description>
    </item>
    <item>
      <title>3.2 try_files: Fallbacks and the SPA Pattern</title>
      <link>https://foxipa.com/en/nginx/learn/try-files-and-fallbacks/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/try-files-and-fallbacks/</guid>
      <description>One directive that walks a list of candidate paths and picks the first that exists — and, in its last arm, jumps anywhere in your config. Small syntax, enormous leverage.</description>
    </item>
    <item>
      <title>3.3 MIME Types, Charset, and Content Negotiation</title>
      <link>https://foxipa.com/en/nginx/learn/mime-types-charset/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/mime-types-charset/</guid>
      <description>One header decides whether the browser renders, downloads, or executes your bytes. NGINX decides it by extension — and hands you three levers to take control.</description>
    </item>
    <item>
      <title>3.4 Serving Files Fast: sendfile, tcp_nopush, open_file_cache</title>
      <link>https://foxipa.com/en/nginx/learn/performance-file-serving/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/performance-file-serving/</guid>
      <description>The three directives everyone copies without reading. This lesson reads them — down to the syscalls — and tells you honestly when each one matters.</description>
    </item>
    <item>
      <title>3.5 Error Pages, index, autoindex, and Redirects</title>
      <link>https://foxipa.com/en/nginx/learn/error-pages-index-redirects/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/error-pages-index-redirects/</guid>
      <description>The last 10% of a static site is what users remember when things go wrong. NGINX&#39;s finishing tools — and one Location-header behavior that surprises everyone once.</description>
    </item>
    <item>
      <title>4.1 proxy_pass Fundamentals: The URI Rules</title>
      <link>https://foxipa.com/en/nginx/learn/proxy-pass-fundamentals/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/proxy-pass-fundamentals/</guid>
      <description>One directive, four behaviors, one character that changes everything. This lesson settles the trailing-slash confusion permanently — with an echo backend as referee.</description>
    </item>
    <item>
      <title>4.2 The Header Contract: Making the Backend Whole</title>
      <link>https://foxipa.com/en/nginx/learn/headers-and-the-real-client/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/headers-and-the-real-client/</guid>
      <description>A proxied request arrives at your app wearing NGINX’s clothes. The headers you set — or forget — are the only way the app learns the truth: who asked, over what protocol, for what.</description>
    </item>
    <item>
      <title>4.3 Speaking Application: FastCGI, uWSGI, SCGI</title>
      <link>https://foxipa.com/en/nginx/learn/fastcgi-uwsgi-scgi/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/fastcgi-uwsgi-scgi/</guid>
      <description>The gateway pattern predates HTTP-everywhere: purpose-built wire protocols between web servers and app runtimes. NGINX speaks them natively — and the differences from proxy_pass are the lesson.</description>
    </item>
    <item>
      <title>4.4 WebSockets and Long-Lived Connections</title>
      <link>https://foxipa.com/en/nginx/learn/websockets/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/websockets/</guid>
      <description>HTTP&#39;s closure: a request ends, the connection may live. WebSockets invert the model — the connection IS the session — and your proxy must stop treating it like a request.</description>
    </item>
    <item>
      <title>4.5 gRPC: Proxying the Modern RPC</title>
      <link>https://foxipa.com/en/nginx/learn/grpc/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/grpc/</guid>
      <description>gRPC is HTTP that grew up: binary frames, streams, and trailers over HTTP/2. NGINX speaks it natively — but only if you give it HTTP/2 to speak it on.</description>
    </item>
    <item>
      <title>4.6 Gateway Behavior: Timeouts, Buffers, Failures, Bodies</title>
      <link>https://foxipa.com/en/nginx/learn/timeouts-buffers-failures/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/timeouts-buffers-failures/</guid>
      <description>A proxy is judged by its worst backend. This lesson is the toolkit that keeps one slow, one broken, and one greedy consumer from defining your service.</description>
    </item>
    <item>
      <title>5.1 The upstream Context: Pools and Round Robin</title>
      <link>https://foxipa.com/en/nginx/learn/upstream-and-round-robin/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/upstream-and-round-robin/</guid>
      <description>Names become infrastructure: one context block turns &#34;an address&#34; into &#34;a pool with rules&#34;.</description>
    </item>
    <item>
      <title>5.2 Scheduling Algorithms: least_conn, hash, ip_hash, random</title>
      <link>https://foxipa.com/en/nginx/learn/scheduling-algorithms/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/scheduling-algorithms/</guid>
      <description>Round robin is fair to servers. These algorithms are fair to requests, to caches, and to sessions — three different definitions of fairness, three different directives.</description>
    </item>
    <item>
      <title>5.3 Failure Handling: Retries, Quarantine, and Backups</title>
      <link>https://foxipa.com/en/nginx/learn/failure-handling/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/failure-handling/</guid>
      <description>Every pool eventually serves through a failure. The difference between an incident and a log line is what you configured in this lesson — and NGINX’s defaults are smarter than they look.</description>
    </item>
    <item>
      <title>5.4 Connection Reuse: Upstream keepalive Pools</title>
      <link>https://foxipa.com/en/nginx/learn/keepalive-upstreams/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/keepalive-upstreams/</guid>
      <description>TCP handshakes are cheap until you count them. On a 10k rps edge, &#34;new connection per request&#34; is a hundred thousand handshakes per second someone has to pay for.</description>
    </item>
    <item>
      <title>5.5 Active Health Checks, Plus, and the Open-Source Road</title>
      <link>https://foxipa.com/en/nginx/learn/health-checks-and-plus/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/health-checks-and-plus/</guid>
      <description>Passive checks learn from traffic. Active checks *ask*. One of them is a product line — the other you can build yourself. A guru knows both, and knows when to pay.</description>
    </item>
    <item>
      <title>6.1 TLS Termination: Certificates and Handshakes</title>
      <link>https://foxipa.com/en/nginx/learn/tls-termination/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/tls-termination/</guid>
      <description>The edge&#39;s first job: turn encrypted client bytes into clean HTTP for your network — and do it without becoming the bottleneck or the weak link.</description>
    </item>
    <item>
      <title>6.2 Hardening: Protocols, Ciphers, and Headers</title>
      <link>https://foxipa.com/en/nginx/learn/hardening/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/hardening/</guid>
      <description>Security policy is a list of things you refuse. This lesson writes that list — then verifies the server actually enforces it, handshake by handshake.</description>
    </item>
    <item>
      <title>6.3 Mutual TLS: Client Certificates</title>
      <link>https://foxipa.com/en/nginx/learn/mtls/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/mtls/</guid>
      <description>TLS usually answers “is the server who it claims?” — mutual TLS adds “and is the client?” The strongest authentication on the internet, demonstrated end to end.</description>
    </item>
    <item>
      <title>6.4 Session Performance: Caches, Tickets, and Stapling</title>
      <link>https://foxipa.com/en/nginx/learn/sessions-stapling/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/sessions-stapling/</guid>
      <description>A full TLS 1.3 handshake is one round trip; TLS 1.2 is two. Multiply by every connection, and crypto becomes your latency line item — unless the parties remember each other.</description>
    </item>
    <item>
      <title>6.5 Access Control: auth_basic, allow/deny, and satisfy</title>
      <link>https://foxipa.com/en/nginx/learn/access-control/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/access-control/</guid>
      <description>The final gate before content: who may even ask? Three directives, one composition rule, and a phase-order trap that bites even veterans.</description>
    </item>
    <item>
      <title>7.1 geo and map: Building Routing Tables</title>
      <link>https://foxipa.com/en/nginx/learn/geo-and-map/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/geo-and-map/</guid>
      <description>Policy begins with classification: &#34;who is this client?&#34; turned into a variable you can route, gate, and log on.</description>
    </item>
    <item>
      <title>7.2 Rate Limiting: The Leaky Bucket, Measured</title>
      <link>https://foxipa.com/en/nginx/learn/rate-limiting/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/rate-limiting/</guid>
      <description>The most misunderstood trio in NGINX: rate, burst, nodelay. Watch the bucket queue requests at exact intervals — measured, not guessed — and count your own 429s.</description>
    </item>
    <item>
      <title>7.3 Connections and Bandwidth: limit_conn, limit_rate</title>
      <link>https://foxipa.com/en/nginx/learn/connections-bandwidth/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/connections-bandwidth/</guid>
      <description>Requests aren&#39;t the only thing clients spend. Some spend connections; some spend bytes. Two directives cap each — measured both ways, with receipts.</description>
    </item>
    <item>
      <title>7.4 Traffic Splitting: split_clients and the Two-Line Canary</title>
      <link>https://foxipa.com/en/nginx/learn/traffic-splitting/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/traffic-splitting/</guid>
      <description>&#34;Show the new checkout to 10% of users.&#34;* — the requirement every product team eventually issues, and the directive almost nobody knows exists.</description>
    </item>
    <item>
      <title>7.5 WAF-Style Logic and Request Blocking</title>
      <link>https://foxipa.com/en/nginx/learn/waf-blocking/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/waf-blocking/</guid>
      <description>Not every request deserves a response. Some deserve a 403 before they cost you a single upstream millisecond — and a few deserve silence. Building that policy, with receipts.</description>
    </item>
    <item>
      <title>8.1 The Caching Mindset: Contracts Before Directives</title>
      <link>https://foxipa.com/en/nginx/learn/caching-mindset/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/caching-mindset/</guid>
      <description>Directives are easy; the thinking is the hard part. This lesson installs the three contracts every cache honors — identity, freshness, and validation — before the module’s directives arrive.</description>
    </item>
    <item>
      <title>8.2 proxy_cache: Keys and Storage</title>
      <link>https://foxipa.com/en/nginx/learn/cache-keys-and-storage/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/cache-keys-and-storage/</guid>
      <description>The machinery: where entries live, how they&#39;re found, and why the key you design decides everything else. Includes a live look inside the on-disk cache.</description>
    </item>
    <item>
      <title>8.3 TTLs, Cache Status, and Bypassing</title>
      <link>https://foxipa.com/en/nginx/learn/ttl-and-status/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/ttl-and-status/</guid>
      <description>How long entries live, what every verdict means, and how to carve holes in the cache when correctness demands it. This is the lesson that makes caches debuggable.</description>
    </item>
    <item>
      <title>8.4 Stale Serving, Herd Collapse, and Micro-Caching</title>
      <link>https://foxipa.com/en/nginx/learn/stale-lock-microcache/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/stale-lock-microcache/</guid>
      <description>The four techniques that turn a cache from an accelerator into an architecture: survive origin failures, absorb stampedes, refresh invisibly, and make the dynamic feel static.</description>
    </item>
    <item>
      <title>8.5 Slice and Large Files: Caching for Media</title>
      <link>https://foxipa.com/en/nginx/learn/slice-and-ranges/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/slice-and-ranges/</guid>
      <description>A 10 GB video in one cache entry is a 10 GB hole in your disk and a 10 GB wait for the first byte. The slice module cuts big content into cacheable, parallel, resumable pieces.</description>
    </item>
    <item>
      <title>9.1 Workers, Connections, and Limits</title>
      <link>https://foxipa.com/en/nginx/learn/workers-and-limits/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/workers-and-limits/</guid>
      <description>Before you tune anything, learn what the knobs actually turn — and how to read the receipts the system gives you. Folklore tuning is how boxes end up slower than their defaults.</description>
    </item>
    <item>
      <title>9.2 Buffers and the Kernel Seam</title>
      <link>https://foxipa.com/en/nginx/learn/buffers-and-kernel/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/buffers-and-kernel/</guid>
      <description>Every byte that crosses NGINX lands in a buffer someone sized. Most “NGINX is slow” tickets are a buffer story wearing a disguise — this lesson teaches you to read all of them.</description>
    </item>
    <item>
      <title>9.3 gzip Done Right</title>
      <link>https://foxipa.com/en/nginx/learn/gzip/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/gzip/</guid>
      <description>The 54 KB text file that becomes 240 bytes. No other directive in NGINX buys that ratio — and no other is misconfigured as often.</description>
    </item>
    <item>
      <title>9.4 Brotli and Modern Compression</title>
      <link>https://foxipa.com/en/nginx/learn/brotli/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/brotli/</guid>
      <description>Brotli typically beats gzip 15–25% on text and costs nothing to serve to clients that can’t speak it. The catch: it’s a dynamic module, so the edge must load it first — receipts included.</description>
    </item>
    <item>
      <title>9.5 HTTP/3 and QUIC</title>
      <link>https://foxipa.com/en/nginx/learn/http3-quic/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/http3-quic/</guid>
      <description>TCP was designed before HTTP existed. QUIC was designed *for* it — and this lesson closes the module with a real HTTP/3 handshake over UDP, verified byte by byte.</description>
    </item>
    <item>
      <title>10.1 Below HTTP: The Stream Module</title>
      <link>https://foxipa.com/en/nginx/learn/stream-module-basics/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/stream-module-basics/</guid>
      <description>NGINX&#39;s second career: the same master/worker engine, the same event loop — but the unit of work is no longer &#34;a request&#34;. It&#39;s &#34;a connection&#34;.</description>
    </item>
    <item>
      <title>10.2 TCP Proxying &amp; Load Balancing</title>
      <link>https://foxipa.com/en/nginx/learn/tcp-proxy-and-balancing/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/tcp-proxy-and-balancing/</guid>
      <description>Module 5&#39;s upstream toolbox, rebuilt for connections: scheduling happens once, pins for life — and the failure receipts look deliciously familiar.</description>
    </item>
    <item>
      <title>10.3 PROXY Protocol</title>
      <link>https://foxipa.com/en/nginx/learn/proxy-protocol/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/proxy-protocol/</guid>
      <description>A TCP proxy is also a lie factory: every upstream sees 127.0.0.1 as the client. The PROXY protocol is the one-line confession that fixes it.</description>
    </item>
    <item>
      <title>10.4 UDP Proxying</title>
      <link>https://foxipa.com/en/nginx/learn/udp-proxying/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/udp-proxying/</guid>
      <description>UDP has no connections — so NGINX invents them. Understanding the invention (and its timeout-defined lifetime) is the whole lesson. Plus: a real datagram-eating bash gotcha, caught and fixed.</description>
    </item>
    <item>
      <title>10.5 TLS Passthrough with SNI Routing</title>
      <link>https://foxipa.com/en/nginx/learn/tls-passthrough-sni/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/tls-passthrough-sni/</guid>
      <description>The party trick that makes security teams smile: route encrypted traffic by hostname without holding a single private key. Then the adult conversation: when not to.</description>
    </item>
    <item>
      <title>11.1 The Rewrite Engine</title>
      <link>https://foxipa.com/en/nginx/learn/rewrite-engine/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/rewrite-engine/</guid>
      <description>Three directives — return, rewrite, set — run before any content handler, before access rules, before almost everything. That earliness is their power and their danger.</description>
    </item>
    <item>
      <title>11.2 The if Trap and Its Cures</title>
      <link>https://foxipa.com/en/nginx/learn/if-trap-and-map-cure/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/if-trap-and-map-cure/</guid>
      <description>&#34;location if&#34; is a rewrite-phase directive pretending to be a control structure. Inside it, you are standing in a different location than you think — reproduced step by step.</description>
    </item>
    <item>
      <title>11.3 Delegated Auth: auth_request</title>
      <link>https://foxipa.com/en/nginx/learn/auth-request/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/auth-request/</guid>
      <description>auth_basic proves you know a password. mTLS proves who your CA says you are. auth_request lets ANY HTTP service decide — cookies, JWTs, business rules — and NGINX enforces the verdict.</description>
    </item>
    <item>
      <title>11.4 Shadow Traffic: mirror</title>
      <link>https://foxipa.com/en/nginx/learn/mirror/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/mirror/</guid>
      <description>Ship v2 by running it in the dark: every production request duplicated to the new code, its responses thrown away, the client never the wiser.</description>
    </item>
    <item>
      <title>11.5 Signed URLs &amp; Protected Downloads</title>
      <link>https://foxipa.com/en/nginx/learn/secure-link-accel/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/secure-link-accel/</guid>
      <description>Two production workhorses, one theme: NGINX and the application each do the half they’re best at. secure_link puts trust in the URL; X-Accel-Redirect puts the bytes back in NGINX’s hands.</description>
    </item>
    <item>
      <title>12.1 The Access Log as a Data System</title>
      <link>https://foxipa.com/en/nginx/learn/log-formats/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/log-formats/</guid>
      <description>The access log is the cheapest, richest telemetry you own: every request, every verdict, zero new infrastructure. Treated as a schema, it becomes your first real data system.</description>
    </item>
    <item>
      <title>12.2 Structured JSON Logs</title>
      <link>https://foxipa.com/en/nginx/learn/json-logs/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/json-logs/</guid>
      <description>escape=json is one parameter and it changes everything: your access log becomes a document stream every pipeline can consume. Getting it valid under ALL conditions is the engineering.</description>
    </item>
    <item>
      <title>12.3 Golden Signals &amp; Upstream Forensics</title>
      <link>https://foxipa.com/en/nginx/learn/golden-signals/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/golden-signals/</guid>
      <description>Latency, traffic, errors, saturation — the four questions every dashboard answers. Everything you need is already in the log line; this lesson is about reading it like an SRE.</description>
    </item>
    <item>
      <title>12.4 stub_status &amp; Live Metrics</title>
      <link>https://foxipa.com/en/nginx/learn/stub-status/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/stub-status/</guid>
      <description>Logs are history; stub_status is now. One location, seven counters, zero dependencies — the OSS answer to &#34;is the front door alive and how hard is it working?&#34;</description>
    </item>
    <item>
      <title>12.5 Conditional Logging &amp; Error Discipline</title>
      <link>https://foxipa.com/en/nginx/learn/conditional-and-errors/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/conditional-and-errors/</guid>
      <description>Log everything and you log nothing: the signal drowns in the routine. Recording only what matters — by request, by severity — plus the rotation and retention that keep logs honest.</description>
    </item>
    <item>
      <title>13.1 Static Config, Dynamic Fleet — and the Discovery Landscape</title>
      <link>https://foxipa.com/en/nginx/learn/static-config-problem/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/static-config-problem/</guid>
      <description>NGINX reads its upstreams once, at config load — your fleet changes every minute; this opener names the lifecycle mismatch, the discovery contract any runtime fix must meet, and the production landscape — plain DNS, Consul&#39;s two doors, Kubernetes controllers, the Plus API — the rest of the module teaches you to ride.</description>
    </item>
    <item>
      <title>13.2 The Resolver Directive</title>
      <link>https://foxipa.com/en/nginx/learn/resolver-anatomy/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/resolver-anatomy/</guid>
      <description>One directive, three parameters, two completely different resolution contexts — and a config-load gotcha you can hit on your very first nginx -t. Know which resolver answers which name.</description>
    </item>
    <item>
      <title>13.3 Runtime Re-resolution: variable proxy_pass</title>
      <link>https://foxipa.com/en/nginx/learn/variable-proxy-pass/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/variable-proxy-pass/</guid>
      <description>The pattern that made dynamic upstreams possible in OSS NGINX a decade before upstreams could resolve: put a variable in proxy_pass, and the name becomes a runtime question.</description>
    </item>
    <item>
      <title>13.4 zone &#43; resolve: Upstream Groups That Move</title>
      <link>https://foxipa.com/en/nginx/learn/zone-and-resolve/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/zone-and-resolve/</guid>
      <description>Since 1.27.3, OSS upstreams can hold DNS-named servers that re-resolve at runtime — you keep the Module 5 toolbox (weights, quarantine, least_conn) AND runtime membership.</description>
    </item>
    <item>
      <title>14.1 The Edge Blueprint</title>
      <link>https://foxipa.com/en/nginx/learn/edge-topologies/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/edge-topologies/</guid>
      <description>Where does NGINX sit? The answer decides your TLS story, your failure domain, and who your debuggers blame. The topology map — and the questions each tier forces you to answer.</description>
    </item>
    <item>
      <title>14.2 NGINX in Containers</title>
      <link>https://foxipa.com/en/nginx/learn/container-contract/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/container-contract/</guid>
      <description>A containerized NGINX is the same binary and same config inside an environment that quietly removes four things the package install gave you. This is the checklist that keeps it production-safe.</description>
    </item>
    <item>
      <title>14.3 The Ingress Model</title>
      <link>https://foxipa.com/en/nginx/learn/k8s-ingress-concepts/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/k8s-ingress-concepts/</guid>
      <description>Kubernetes didn’t invent new routing concepts — it renamed the ones you already know. The translation table: every Ingress object you’ll ever read, as the NGINX config it becomes.</description>
    </item>
    <item>
      <title>14.4 Operating a Mini Ingress Controller</title>
      <link>https://foxipa.com/en/nginx/learn/mini-ingress-controller/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/mini-ingress-controller/</guid>
      <description>You’ve read what controllers do; now run one. Forty lines of shell — manifest, renderer, validator, reloader — that move real traffic when the fleet changes. Every receipt is real.</description>
    </item>
    <item>
      <title>14.5 Choosing Your Ingress</title>
      <link>https://foxipa.com/en/nginx/learn/choosing-ingress/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/choosing-ingress/</guid>
      <description>ingress-nginx, F5 NGINX Ingress Controller, Gateway API implementations, Envoy-shaped alternatives — the architecture module’s last lesson is a decision, made once, lived with for years.</description>
    </item>
    <item>
      <title>15.1 The Extension Landscape</title>
      <link>https://foxipa.com/en/nginx/learn/extension-landscape/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/extension-landscape/</guid>
      <description>You need a thing NGINX doesn’t do. Before reaching for any tool, know the four you’re choosing between — each buys a different kind of power and bills a different kind of cost.</description>
    </item>
    <item>
      <title>15.2 Building NGINX from Source</title>
      <link>https://foxipa.com/en/nginx/learn/building-from-source/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/building-from-source/</guid>
      <description>Three commands and ninety seconds: ./configure, make, make install. The skill is knowing what configure decides on your behalf — those choices become your binary’s contract with the world.</description>
    </item>
    <item>
      <title>15.3 Dynamic Modules &amp; Binary Compatibility</title>
      <link>https://foxipa.com/en/nginx/learn/dynamic-modules/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/dynamic-modules/</guid>
      <description>One directive loads new code into a running architecture; one signature rule decides whether it loads at all. The exact error a mismatch produces — and the version-pinning that prevents it.</description>
    </item>
    <item>
      <title>15.4 njs: Scripting the Request</title>
      <link>https://foxipa.com/en/nginx/learn/njs/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/njs/</guid>
      <description>Everything config can’t express: parsing tokens, classifying clients, generating JSON, deciding routes — in sandboxed JavaScript that couldn’t segfault your worker if it tried.</description>
    </item>
    <item>
      <title>15.5 Brotli, Measured</title>
      <link>https://foxipa.com/en/nginx/learn/brotli-m15/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/brotli-m15/</guid>
      <description>The config was Lesson 9.4&#39;s and the build was 15.2/15.3&#39;s — this lesson is the wire&#39;s turn to talk: 285 bytes became 50 while gzip managed 77, and the fine print (HTTPS-only browser br, CDNs, streaming) turns into runbook material.</description>
    </item>
    <item>
      <title>16.1 The Debugging Method</title>
      <link>https://foxipa.com/en/nginx/learn/debugging-method/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/debugging-method/</guid>
      <description>Tools don&#39;t debug; method does. The layers of the stack, the instrument for each, and the discipline of turning symptoms into receipts before touching a single directive.</description>
    </item>
    <item>
      <title>16.2 The Debug Build</title>
      <link>https://foxipa.com/en/nginx/learn/debug-build/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/debug-build/</guid>
      <description>Every malloc, every parsed header, every phase transition, every keep-alive decision — narrated, timestamped, attributed to a worker and connection. The debug build is NGINX’s flight recorder.</description>
    </item>
    <item>
      <title>16.3 /proc Forensics</title>
      <link>https://foxipa.com/en/nginx/learn/proc-forensics/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/proc-forensics/</guid>
      <description>strace is missing, gdb is missing, ptrace is locked — and /proc doesn’t care. The kernel’s own filesystem tells you what every process holds, waits on, and is allowed to do.</description>
    </item>
    <item>
      <title>16.4 Core Dumps</title>
      <link>https://foxipa.com/en/nginx/learn/core-dumps/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/core-dumps/</guid>
      <description>The worker died with a scream. The master shrugs, respawns, moves on — but the scream was recorded: a core file holding the exact moment of death. Capturing and reading it is the craft.</description>
    </item>
    <item>
      <title>16.5 Profiling &amp; Flame Graphs</title>
      <link>https://foxipa.com/en/nginx/learn/profiling/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 &#43;0000</pubDate>
      <guid>https://foxipa.com/en/nginx/learn/profiling/</guid>
      <description>Where does the CPU actually GO? perf answers with a flame graph; a locked-down host says no — so this lesson builds the honest rootless substitute and maps when each weapon wins.</description>
    </item>
  </channel>
</rss>
