As you guys may or may not know, there has been a lot of improvment in the web sphere in terms of performance tweaking and security. A lot of people have realized that its just not to good to have your web server be a first point of contact (after the firewall). That’s right. Your web server should NOT be serving the web. Sounds counter intuitive, right?
Well, allow me to explain. Web servers like IIS and Apache, as an example, have gotten too heavy and cumbersome. Ok, well – some of you guys are hard core fans of both servers. But they don’t scale very well. That is why you see people moving to lighter weight web servers like Resin (and many others), or so specially built high performance web servers like Lighttpd.
What’s needed is a server that can do a couple thing:
- Handle traffic issues like the infamous C10K problem.
- Reverse Proxy to my actual web server (or cluster). It should be the only thing touching my web server.
- Work under minimal resources. I don’t want to spend $$$.
In fact, here is the official description: “Nginx is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. Written by Igor Sysoev in 2005, Nginx now hosts nearly 6% (13M) of all domains worldwide. Nginx is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption. Nginx is one of a handful of servers written to address the C10K problem. Unlike traditional servers, Nginx doesn’t rely on threads to handle requests. Instead it uses a much more scalable event-driven (asynchronous) architecture. This architecture uses small, but most importantly, predictable amounts of memory under load. Even if you don’t expect to handle thousands of simultaneous requests, you can still benefit from Nginx’s high-performance and small memory footprint. Nginx scales in all directions: from the smallest VPS all the way up to clusters of servers. Nginx powers several high-visibility sites, such as WordPress, Hulu, Github, Ohloh, SourceForge and TorrentReactor.”
This solves a couple issues. One being that your web server isn’t directly hit by outside traffic. Traffic goes from the firewall to this server, which can then do a couple things. It can scruitinize the request, do re-writing, caching, handle sending files, block bad requests, etc. All those things you didn’t want your primary web server to do!
That’s where NGINX comes in. NGINX currently handles 6% of all sites on the net. Its the web server you never heard of, and you better get to know. People building high performance sites in Ruby on Rails have started to use NGINX to boost perfomance. For more details, see http://www.modrails.com/. Yes, they are overcoming those infamous RoR hurdles with free and easy solutions! So should you!
There are a couple of things you need to know.
- One, if you are running Windows, NGINX doesn’t explicitly support Windows services. But fear no more, the first and only resource for setting up NGINX on Windows as a service comes from a fellow CF developer! And it works like a charm. Read more @ http://misterdai.wordpress.com/2009/10/16/nginx-windows-service/.
- Second, NGINX runs a site like WordPress. That’s right, check the WordPress.com HTTP Response Headers. Or see this site! That’s right, my blog! If you need to sell making this change to management, then that should get you started on the right foot.
- NGINX was developed originally for some Russian sites, and most documentation is in Russian. However, there is a new Wiki with tons of docs and an active forum in English. NGINX is being actively developed. More info @ http://wiki.nginx.org/Main.
- For some more details on using NGINX with ColdFusion, see this blog post @ http://coldfusion.tcs.de/nginx-and-coldfusion-using-nginx-as-a-reverse-proxy-for-more-performance.
Basically, my job is to get your minds whirling again. No ColdFusion is NOT dead, its just we as a community need to step up and take it to the next level. Imagine is MySpace has been built with ColdFusion, and instead if adding servers upon servers and including .NET, they had this option? Do you currently have load issues? What can NGINX do for you?
For more details go to:
People have been using NGINX in front of their mail servers (like Exchange), and for all sorts of other purposes. I’m investigating NGINX, Varnish, and other Web Application Firewalls to formulate what could become an awesome front-end for ColdFusion!