ARC2 Proxy Blog
Guides, benchmarks and product news on reverse proxying, caching, Rust and Linux.
Building a Reverse Proxy in Rust with Axum 0.7, Tower-HTTP and rustls
A hands-on guide to the building blocks of a real reverse proxy in Axum 0.7: serving static files with ServeDir and nest_service, forwarding requests with a hyper HTTP client, terminating TLS with rustls 0.23 and axum-server, and extracting the client's real address with into_make_service_with_connect_info.
Read more →
YARP vs. NGINX vs. ARC2 Proxy: Technical Differences and Performance
A technical comparison of three reverse proxies — Microsoft's YARP on .NET, the C-based NGINX, and the Rust-and-Tokio ARC2 Proxy — covering their architectures, memory-safety and garbage-collection trade-offs, and how those choices show up in throughput and tail latency under load.
Read more →
What Is Edge Caching and Why Your Site Needs It
Edge caching stores copies of your content close to your users so most requests never reach your origin. This guide explains what the edge is, how cache keys, TTLs, and purging work, what is safe to cache, and why a high cache-hit ratio is the highest-leverage move for performance, reliability, and cost.
Read more →
Latency vs. User Experience: Why Milliseconds Decide Whether Visitors Stay
Latency is the silent tax on every website. This article breaks down what latency really is, how it maps onto human perception and user behaviour, where the milliseconds hide, why it is not the same as bandwidth, and the handful of moves that actually make a site feel fast.
Read more →
Graceful Shutdown in Axum and Tokio
Stopping a server correctly is where the subtle bugs live. This article shows how to implement graceful shutdown in Axum 0.7 and Tokio — catching both SIGINT and SIGTERM, draining in-flight requests with a bounded timeout via with_graceful_shutdown and axum-server handles, and cancelling background tasks cleanly on every deploy.
Read more →
In-Memory Caching in Rust with DashMap
The fastest request is the one you never compute. This guide covers DashMap, a sharded concurrent hash map for Rust, why it beats Mutex<HashMap> under load, and how to build a practical in-memory cache with TTL expiry, background eviction, and the same-shard deadlock pitfall to avoid.
Read more →
Rate Limiting in Axum and Tower
Rate limiting protects your service from abuse, floods, and runaway clients. This article builds it into Axum 0.7 — first a token-bucket Tower middleware from scratch keyed on the client IP, then the production-ready tower_governor crate — and explains where in the request path to enforce limits for the most protection.
Read more →
Automatic HTTPS in Rust: Let's Encrypt / ACME with a Dynamic SNI Cert Resolver
Never renew a certificate by hand again. This article shows how to automate the full TLS lifecycle in Rust — driving ACME (Let's Encrypt) with an HTTP-01 challenge, and a dynamic rustls SNI certificate resolver that swaps in freshly issued certs for many domains without ever restarting the server.
Read more →
DDoS Protection Basics: How Caching and Rate Limiting Absorb Attacks
You don't need an exotic appliance to survive most DDoS attacks. This guide explains what volumetric, protocol, and application-layer attacks are, and how edge caching deflects floods before they reach your origin, rate limiting caps what any single source can do, and a WAF, waiting rooms, and a distributed edge complete a defence-in-depth strategy.
Read more →