rust.solutions

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.