Bringing rust.solutions online
This site is now live. Rather than a monolithic app, the domain runs on a small edge pattern that keeps every subdomain independently deployable.
The edge pattern
A single server block owns rust.solutions and *.rust.solutions. A map directive resolves each hostname to a loopback backend:
map $host $huck_backend {
rust.solutions http://127.0.0.1:13008;
blog.rust.solutions http://127.0.0.1:13013;
default "";
}
Unknown subdomains fall through to an empty string and get rejected with a 404 before any proxying happens. Known ones are forwarded to whatever listens on their assigned port — a static file server today, a Rust service tomorrow.
Why loopback ports
Each backend binds to 127.0.0.1 only. Nothing is directly reachable from the internet; the TLS-terminating edge is the single front door. Adding a service means binding one port and adding one map line.
The static build
The apex is generated by Zola: no JavaScript, no client framework, one stylesheet, HTML minified at build time. The whole page budget fits comfortably in a few kilobytes.
That’s the whole trick: boring components, clear seams between them.