All - I've read through most of the posts before posting this but couldn't find answer to the specific question I have.
I've been looking at nginx, squid, varnish and Apache Traffic server to determine the best one to use as a [u]transparent forward caching proxy[/u] with necessary modifications (to the code or configuration file) - I understand Nginx (and varnish) is built from scratch to be a reverse proxy and I know nginx performs very well under load as a reverse proxy. With Nginx adoption increasing, I'd like to know if there are enough "caching support" in Nginx to be used as [a] caching proxy and [b] forward proxy. Here are my specific questions:
1. What major "feature" or "capability" does Nginx lack as a forward proxy (as compared to say Squid) ? With modification to the code or "proxy_pass" config line, it's not difficult to make it talk to the Internet (and not a specific backend server). So what are the missing pieces in Nginx that makes it unsuitable for forward proxy mode ?
2. What are the "caching" features that are critical (compared to squid) that are missing in squid ? If Nginx is changed to run as forward proxy (with httpproxymodule), can I expect similar cache hit with Nginx and other proxy caches (say Squid) ?
3. What are other features of a cache that Nginx doesn't support and are critical ?
4. I know Nginx is far superior in performance compared to squid but which piece/component of Nginx is contributing to the gain ? Is it the event driven model, RAM memory usage, data structures or caching architecture ?
Thanks in advance.