| I generally recommend Caddy over Nginx, but Nginx does still have certain advantages: - Nginx supports OpenSSL commands that enable features like TLS record padding. - Performance: better latency and scalability to more connections. Not everyone uses a CDN for static/cached content - Kernel-accelerated TLS offload on Linux and FreeBSD - Many existing modules provide unique functionality. The many modules for live video streaming and image processing are good examples. - An ecosystem of patches with features like HPACK static dictionaries, dynamic TLS record sizing, etce > …has terrible language integration. Generally, "language integration" isn't really a use-case for vanilla Nginx; it's a use-case for Nginx Unit, an Nginx language-specific module, or OpenResty. I personally prefer the reverse-proxy route since it lets me use whatever language I want regardless of server support: Go, Rust, Python, C, etc. If none of these are that important then I absolutely would not recommend Nginx; Caddy would be the better tool. > People aren't writing internet scale software in lua for a reason. I'd include Itch.io, much of Taobao, and some of the most popular API gateways (including Kong) in the category of "Internet-scale software written by 'people'". POSSE (Publish on Own Site, Syndicate Elsewhere) note from https://seirdy.one/notes/2022/09/09/reasons-to-use-nginx/ |
- Padding: (I'm pretty sure Go already does this too: https://go.dev/src/crypto/tls/conn.go)
- Performance: Requires nuanced tuning. Caddy performs competitively well for real world usage
- kTLS: Sacrifices memory safety.
- Existing modules: How do they perform compared to natively-compiled code? Caddy modules can do all that nginx modules can do, and more, but are natively compiled. I ran experiments with Caddy+Starlark that performed 2x as fast as Nginx+Lua.