What does Nginx lack that Apache has?

I think the biggest pieces still missing from Nginx is full WebDAV support. Pretty much every other aspect is covered by either the core or a 3rd party module.

Nginx does not support things like mod_php by design, so I'm not sure you can say that Nginx is missing these parts. It's more like Nginx is telling you rather forcefully that using this is stupid.


Apache has a great amount of modules available which allow for some deployment scenarios which are not possible with Nginx.

One example is mod_dav_svn for hosting Subversion over HTTP. It is only available for Apache. Other notable examples are things like mod_perl or mod_php. While most traditional setups can also be done via FCGI (or WSGI, or passenger), having an actual interpreter in-process can be beneficial if you need to e.g. implement custom authentication schemes inside the webserver (like it's done for git or svn hosting with Redmine/ChiliProject).

Generally, your friend is right: most common deployment scenarios can also be solved with nginx, but Apache still is more flexible if you have to build some more "special" stuff.


The short version of the story is that Apache has a lot of plugins and community built up around it. Nginx, has only been around for a short time comparatively, and so it doesn't have the community code base yet.

When people ask me what the difference is, Nginx is a steak knife, it's good for a variety of uses and does some things extremely well. Apache is a Swiss Army Knife, it's got a ton of different features and does all of them reasonably well.