Show HN: Hosting my website using my C web server
Motivation and Learning Value
- Many commenters like the project as a fun, educational way to understand networking, HTTP, and low-level system APIs.
- Implementing a small HTTP/1.1 server is described as surprisingly tractable and “magical,” especially when it serves real traffic.
- Several people share similar hobby or experimental servers (C, C++, Rust, assembly, LabView), often for blogs or internal tools.
Security and Production Readiness
- Strong warnings that an ad‑hoc C server exposed to the internet is easy to get wrong and could be insecure.
- Others argue that for a personal blog with no sensitive data, the real-world risk and payoff for attackers are low.
- Debate over whether fewer lines of custom code are easier to secure than large, widely used servers; some say community scrutiny of mainstream software outweighs the simplicity advantage of small personal projects.
Static Content, Paths, and Asset Handling
- Discussion of hardcoding file paths or embedding static assets (ROMFS, compiled-in HTML) to avoid filesystem bugs and directory traversal.
- Pushback that this causes recompilation friction and is not worth it for frequent content updates.
- Some use hybrids: baked paths with dynamic file reads, or in-memory caches with reload signals.
HTTP/1.x Scope and Implementation Size
- Consensus that a basic HTTP/1.0 or reduced HTTP/1.1 implementation is small: only GET, Content-Length, minimal headers.
- Features like chunked transfer, range requests, and full spec compliance are optional; the project intentionally rejects client chunked uploads.
- Comparisons to other small HTTP servers show similar code size ranges.
Performance, Scaling, and HN Traffic
- The server reportedly survived the HN front page; commenters note that HN traffic is modest and many simple setups can handle it.
- Some argue a VPS + nginx or lighttpd is more than enough for static sites; CDNs are “boring but optimal” if you truly care about scale.
Reverse Proxies, TLS, and Ops Concerns
- Big subthread on whether reverse proxies (nginx, Caddy, etc.) are necessary.
- Pro-proxy arguments: TLS termination, serving static files efficiently, virtual hosting on one IP, caching, rate-limiting, WAF, blue‑green deployments, shared ops controls, and isolation of a small, hardened edge component.
- Anti/cautious view: for a single simple app that already speaks HTTPS, a proxy can be needless complexity and adds latency; many uses are labeled habitual or “cargo cult,” though others contest that label as unfair.
Language Choices and C’s Role
- Debate over C’s modern relevance: some see it as dangerous and archaic, others as simple, powerful, and foundational.
- Memory‑safe languages (Rust, higher-level stacks) are cited as safer and faster to develop in, but several insist that understanding C and pointers is still important for serious systems work.