I hate sites like this. Im probably stupid but I have no idea what precisely it is after reading that page. I just know that marketing team wants me to believe it's going to be my saviour.
This looks pretty cool, and makes me sad that Mongrel2 never became popular. In short: Mongrel2 solves the same problem, but does it by letting your application handle requests and websocket connections over ZeroMQ instead of eg FastCGI.<p>I guess it lost momentum when ZeroMQ did. Anyone know why? Sounds like a dream solution in the current microservice hype.<p><a href="http://mongrel2.org/" rel="nofollow">http://mongrel2.org/</a>
Confusing description. After seeing the Github README (<a href="https://github.com/nginx/unit#integration-with-nginx" rel="nofollow">https://github.com/nginx/unit#integration-with-nginx</a>), it looks to be Nginx's alternative to low-level, language-specific, app servers, e.g. PHP-FPM or Rack, with the benefit that a single Unit process can support multiple languages via its dynamic module architecture, similar to Nginx web server's dynamic modules.<p>It's still intended to run behind Nginx web server (or some other web server), much like you'd run something like PHP-FPM behind a web server.
<i>> It is not recommended to expose unsecure Unit API</i><p>why do people always use "not recommended" when they actually mean "do not ever do this or you'll end up the laughing stock in the tech press"<p>Exposing this otherwise awesome API to the public will amount to a free RCE for everybody. So not ever expose this to the public, not even behind some authentication.<p>It's very cool that by design it's only listening on a domain socket. Don't add a proxy in front of this.
I am biased, but call me underwhelmed. It seems that with every "new" feature, nginx is copying Apache httpd, even now claiming to be the "swiss army knife" of web-servers. Embedded languages. Dynamic modules. Support of uWSGI. gracefull restarts. Thread pools... and yet people eat it up. Just goes to show what having corporate-backed marketing and PR can do.
Could anyone explain to me why I would want to use this? What exactly is the use case and benefits of it when I am for example running a go web application?
It's worth noting that it's rarely necessary or desirable to put an app server like nginx in front of Go HTTP server applications. The Go standard library http and TLS stack are production quality and rock solid. Putting something in front is mostly cargo culting from people more used to the worlds of PHP/Python/Ruby/etc.
I initially thought it would allow to dynamically handle upstreams list (and other configuration) like hipache is doing [1], which would be awesome for dokku or other container management systems which rely on system nginx. But after seeing languages mentioned, I'm confused.<p>Is it supposed to replace language specific servers, like unicorn and puma for rails (but then, I'm confused about what such kind of support would be for Go, since the server is directly embedded in the program)? Does it embeds interpreter for interpreted languages, like mod_* did for apache?<p>[1] <a href="https://github.com/hipache/hipache" rel="nofollow">https://github.com/hipache/hipache</a>
I'm having a hard time seeing what niche this fills. It seems to be both a process manager and TCP proxy. What am I missing here? What makes this better than, for example, using docker-compose?<p>I think a "how it works" or "design doc" would be really helpful.<p>That said, the source files do make for pleasant reading. The nginx team has always set a strong example for what good C programming looks like.<p>EDIT: Their blog post [0] makes this more clear... nginx unit is one of four parts in their new "nginx application platform" [1]<p>[0] <a href="https://www.nginx.com/blog/introducing-nginx-application-platform/" rel="nofollow">https://www.nginx.com/blog/introducing-nginx-application-pla...</a><p>[1] <a href="https://www.nginx.com/products/" rel="nofollow">https://www.nginx.com/products/</a>
More useful: <a href="http://unit.nginx.org/docs-nginx-unit.html" rel="nofollow">http://unit.nginx.org/docs-nginx-unit.html</a>
Interesting. I like the restartless configs idea. This is becoming more common these days with short lived microservices. This week I just switched my load balancer setup from HAProxy to Traefik - very nice API based setup. <a href="https://traefik.io/" rel="nofollow">https://traefik.io/</a>
Also note github repo at <a href="https://github.com/nginx/unit" rel="nofollow">https://github.com/nginx/unit</a>
I'm happy to see this. nginx itself is excellent software, I'll be happy to use similar tech for the application server as well (instead of uwsgi).<p>There are a couple of options I'd like to see added to the Python configuration though before I could try it:<p>- Ability to point it at a virtualenv.<p>- Ability to set environment variables for the application.
The logo makes it as if it's read "N Unit", which is probably confusing as a popular unit testing with such name exists: <a href="http://nunit.org/" rel="nofollow">http://nunit.org/</a>
So it looks like they basically rewrote uwsgi and slapped a rest api on top of it..
(as a big fan of uwsgi, that seems like a reasonable thing to do...)
I'm still not sure I understand "Unit".<p>I can't speak for the other languages (PHP, Go, Python) but I have some reservations about it helping Java (as well as Erlang and other (J)VM languages) as FastCGI like stuff has been attempted for Java in the past with not very good success with the exception of Resin.<p>I guess it would be interesting though if they did a native Servlet 3.0+ implementation like Resin but I doubt that is is what will happen. Regardless Netty, Undertow and even Jetty have caught up speed wise to Resin (well at least according to techempower).
For Go, does anyone have opinions on how is this is advantageous than using the in-built HTTP server (net.Listen() from net/http) that can fronted by a regular nginx/proxy_pass?
I am surprised noone mentioned Kong [1] yet. It seems to implement most of stuff promised by Unit and it was around for a few years.<p>[1] <a href="https://getkong.org/" rel="nofollow">https://getkong.org/</a>
Any use for that on small scale (of 1 instance)? If you'd need to run nginx in front of it anyway, does it provide any use in case where you'd normally use php-fpm and some proxy_pass?
The concept of XUnit is so ingrained in my head that I assumed it was a unit testing framework for NGINX.<p>The rest of the headline cleared it up of course, but I was curious for a minute how that would look.<p>EDIT: When discussing a new product, I would think the name is a fair point of discussion.<p>Furthermore after this thread's title changed, it now requires a clickthrough to dispel similar misunderstandings.
I didn't see this mentioned but is there any way to upgrade the versions of the modules such as Go and PHP indepedendently of the core Unit package?
I recently tried to deploy a python flask application, and it was quite a mess. It relied on some services I had never heard of, and the documentation was a mess (not the documentation of Flask but of how to deploy it properly).<p>If Nginx Unit could host flask applications, it would be great news.