The main reason that I've decided to switch is that lighttpd no longer seems to be actively developed. They still do bug fix releases, but aside from that, development seems to have been stalled. They have been working on their 1.5 branch for years, without marking it as stable. In fact, they even started working on a 2.0 branch without first releasing 1.5, which was a warning sign that development was losing focus.
Nginx has some weirdnesses and unexpected design decisions, though. For example
- it has a (useless) module for serving an empty GIF, but can't run CGI scripts without help (probably due to the fact that nginx was originally designed to be a proxy)
- it can't dynamically load modules, making it harder for packaging and installing third-party modules
One feature that I will miss from lighttpd is its ability to automatically split SCRIPT_NAME and PATH_INFO based on what files are actually on the filesystem. I depend on that feature in my own CMS, which means I'll have to implement it myself, which is slightly inconvenient, but not too big of a deal.
I slightly prefer the lighttpd configuration file format, but that could be just a matter of what I'm used to.
Switching to nginx means that I'll be able to try out Passenger, which seems like a very interesting application server.