| ▲ | dearing 3 hours ago | |
I'm interested in your statement: I myself write custom reverse proxies, and within, export custom metrics to custom collectors but in Go instead of Rust. Now I do this for a myriad of reasons but not because Nginx was written in C? I consider my self DevOops professionally and read this statement to mean DevOps isn't as such. | ||
| ▲ | xyzzy_plugh 2 hours ago | parent [-] | |
There's a lot of nuance in reverse proxies. You're off to a good start with Go as the standard library gives you a very strong and battle-tested HTTP implementation as well as a basic reverse-proxy interface to build with. Avoiding opening a can of security-issue-worms involves knowing what you're doing and depends heavily on the environment you're operating in. Internally proxying traffic between services? A cakewalk. Translating between HTTP2 or 3 to 1.1? Forwarding origin client IP safely? Sanitizing headers (and I don't mean the in-built sanitization that Go provides)? There's a lot of little things. Tools like Nginx and Envoy strike from the opposite direction: an extensive suite of configurable tools to reverse proxy the way you need, with relative safety. Like you, I would almost certainly prefer writing a small reverse proxy in Go over deploying Nginx. | ||