“nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server.”
For people working on anything related to some web technology, it’s hard not to have heard of nginx. It can serve image files residing in a machine, and it can also serve the content it reads from other servers where it acts as a proxy. That way it’s possible to configure it for load-balancing, SSL-termination, rate-limiting, authentication or many other cross functional requirements. It really shines where it can process the requests or responses though. Number of modules and extensions enable it to rewrite requests, cache responses, crop images and even run lua code.
We had used nginx for small cases like fronting flask applications but it was in 2013 where it really saved the day. We were deploying HAproxy as our main load-balancer back then but it was completely missing multi-threading and the traffic levels we were required to serve was way over its capabilities. Nginx easily replaced it in a few days and we never looked back. Then came legacy apache httpd/mod_php servers to replace with nginx/php-fpm. And then it’s in our elastic content delivery cluster, where it processes images, re-packs video files, load-balances application servers and caches the content. Solution generally works with lua scripts, but when something really out-of-the-context is required we code it in our custom C modules.