Hacker News new | ask | show | jobs
by maxmalysh 2207 days ago
Monitoring capabilities are missing from Nginx on purpose. They are not and will never be available for free because there is "NGINX Plus".

This is why I recommend switching to HAProxy.

5 comments

I'd love to just "switch to X", but there is no X which provides all of the above in one great package: Static file serving, load-balanced proxying (TCP/HTTP), fine-grained caching, automatic Let's Encrypt update, API-based configuration (for dynamic upstreams etc), monitoring. Maybe there shouldn't be such a tool. For all other use-cases I go with nginx since it at least provides decent proxying, caching and static file serving.
Correct me if I’m wrong, but doesn’t Caddy 2 do almost all if that?
Had to check, Caching is still missing from Caddy 2, everything else seems to be there [1]. Now if there's no missing minor feature that I rely on in nginx, I might be able to switch eventually, fingers crossed.

[1] https://github.com/caddyserver/cache-handler/issues/1

You mean the software which wouldn't start when let's encrypts acme server was offline and which developers said this is working as intended?

I mean, I'd definitely encourage people to use it for hobby projects, but if that's how the developers see their software, I would never trust them with anything serious.

Someone's a little out of the loop.
I know it was "fixed" after thousands of people chimed in.

Nonetheless, I still wouldn't be able to trust developers who think that's reasonable.

if it had been an error and unintentional i wouldn't have been worried. mistakes happen to everyone. but it was an actual design decision. Without serious code review i'd be too worried the developers had any other bright ideas.

You're responding to caddy's author.
Nginx does automatic let's encrypt? Since when?
certbot --nginx foo.bar.com works like a charm
X == Apache httpd 2.4
I was thinking the exact same thing ironically.

Static file serving? Sure!

Load balanced proxying? mod_proxy_balancer is great!

Fine grained caching? mod_disk_cache is also great

Updating loadbalancer bits via the api?

mod_proxy_balancer supports a balancer-manager endpoint for that to do live updates

monitoring? mod_status + prometheus exporter or

mod_prometheus_status

native LE support? https://github.com/icing/mod_md is going to be rolled into upstream apache

Have you actually seen an apache in the wild in the last few years? No one picks it anymore, I'm not sure why.. Well, besides the fact that nginx is now nginx-ingress-controller and we all use k8.. :/
Why does no one pick it anymore? The reason is twofold: (1) the amount of FUD that surrounds it, based on old comparisons of nginx and Apache httpd 1.3 or 2.x using Prefork and (2) cool-kid syndrome. This thread itself is a perfect example.
Apache still runs some really big websites that likely have more requests than many of these startups. Ticketmaster has used Apache for almost 15 years as their primary webserver (but they're fronted by layers of varnish / Akamai). They also maxed out dual 10G links with web traffic in 2007 or so when I worked for them.

That said, netcraft says Apache still runs almost 25% of the internet, which is no small stake: https://news.netcraft.com/archives/category/web-server-surve...

I still use it to have basic auth connected to LDAP.

The weakness of nginx is that it can't have a dynamic module and if it's not compiled in, you need to roll your own build, which I won't do due to maintenance burden.

Maybe it‘s due to guilt-by-association with PHP and the LAMP stack...
Yes, but I know some of the apache.org SRE so maybe my view is biased.
The most amazing guy who wrote the book on mod_rewrite (Rich Bowen) is from the same tiny town where I grew up in. The apache software foundation upstream folks are super good people.
Do you know if it's the same with Openresty?
Wish all distros shipped https://github.com/vozlt/nginx-module-vts by default. It's a minor pain to self-build
This is cool!
HAProxy also has an 'enterprise' offering[1], what makes this different from nginx plus?

[1] https://www.haproxy.com/products/haproxy-enterprise-edition/

Haproxy's full monitoring capabilities are available in the open source version. Nginx's are not. The stub_status module is very limited. Compare https://www.haproxy.com/blog/exploring-the-haproxy-stats-pag... with https://nginx.org/libxslt/en/docs/http/ngx_http_stub_status_...
What exactly do you need to monitor on your nginxes? We collect logs, scrape metrics from the nginx pods and... that's enough..
I always wonder - why no one from open source community has created better stats module? Is there something in the license that prohibits creation of modules that overlap with Nginx Plus?
I would assume it's the lack of dynamic module support for nginx and you need to compile your own build even if someone creates a module.
That's true for any functionality provided by modules and there's plethora of them. Also, Nginx has support for dynamic modules. Recompiling Nginx always worked out of the box for me too, so it's not like a big issue.

One thing that comes to my mind is that maybe this can't be solved by a module due to missing API in open source Nginx.

And why others would recommend Nginx Plus.
If you can afford to pay four figures per instance per year, yeah