The general circles around me have already moved on to reverse proxies implemented in Rust and there is talk about reverse proxies implemented in Lean 4.
But this native Prometheus Integration with nginx, this is going to be useful to many in DevOps-ish roles out there.
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.
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.
It's such a bad technical decision for most people. Everyone rewrites it's own gateway / reverse proxy with bugs, lacks of feature, security problems and non standard integration.
Nginx / envoy should be your default choice for most use cases.
> Nginx / envoy should be your default choice for most use cases.
Nginx was there like 15 years ago and it feels it has been stuck there with no progress ever since. No metrics, no ACME certs... I moved to Traefik and never looked back.
Can’t help but think that nginx’s open core model is the reason nginx never got support for exporting Prometheus metrics on its own.
Bullseye.
Pff. Nginxs mods exporting metrics were written by the dozens before Prometheus was a thing.
Prom export is also inefficient as fuck. No one serious uses it.
Edit: I wrote two, one in 2009, another in 2013 in case you wonder.
The general circles around me have already moved on to reverse proxies implemented in Rust and there is talk about reverse proxies implemented in Lean 4.
But this native Prometheus Integration with nginx, this is going to be useful to many in DevOps-ish roles out there.
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.
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.
It's such a bad technical decision for most people. Everyone rewrites it's own gateway / reverse proxy with bugs, lacks of feature, security problems and non standard integration.
Nginx / envoy should be your default choice for most use cases.
Agreed. Feel like the AI era has removed a lot of the “don’t roll your own” instincts people had.
Just because you can doesn’t mean you should. There is a lot to be said for battle tested.
And if you need something, envoy is pretty extensible
> Nginx / envoy should be your default choice for most use cases.
Nginx was there like 15 years ago and it feels it has been stuck there with no progress ever since. No metrics, no ACME certs... I moved to Traefik and never looked back.