There are a few reasons why we default to Apache over something else (e.g. Nginx).
Here's a few reasons OTTOMH (some are sort of related):
Fully featured - e.g. Nginx does not fully implement WebDAV (as used in our Fileserver appliance).
More flexible - Nginx is a fantastic webserver; but it's not as adaptable or as mature as Apache. Nginx is awesome within a range; Apache is a jack of all trades (and probably master of almost none - WebDAV seems to be an exception).
More widely supported - almost every webapp available to humankind (particularly php apps) provide support for running on Apache. Most will still run on Nginx, but many are either not officially supported, not well documented, or combo of both.
More OOTB plugins (i.e. tons of ready to install Apache modules) - makes development and maintenance easier.
More user friendly - Apache config is pretty straight forward in comparison to Nginx
Better/more documentation - Apache docs are incredible!
Supported Webmin module available - many TurnKey users are Linux newbs, so having a GUI for config is pretty much a necessity. There is a third party Nginx Webmin module, but it's not supported and hasn't been updated in years.
FWIW, I still think that the massive rise in Nginx usage is at least in part due to the fact that it's "cool", rather than any particularly good technical reason. FYI, despite claims that it is fundamentally better, one of our hosting partners has demonstrated that that's not always the case. Given sufficient resources, in many scenarios, the performance difference between Apache and Nginx is negligible.
On the flip side, I would argue that under low resource scenarios, and using non-optimized config, Nginx will almost always perform better than Apache. Many users don't have the knowledge or inclination to performance tune Apache. As the tuning needs to take into account the normal load and resource availability of the server, we can't pre-tune it any more than we currently do. So OOTB, end users will almost always notice an improvement been an untuned Apache and an untuned Nginx.
Also the flipside of being less adaptable and less featureful, is that it's also going to generally have a smaller codebase and therefore less attack vectors and less likelihood of unnoticed security related bugs. So essentially it should be more secure OOTB.
None of the above Apache "advantages"/Nginx "disadvantages" are complete showstoppers for many (probably most) of the appliances that currently use Apache. And in fact, we are considering moving some appliances to Nginx for our next release (v15.0). WordPress is definitely one that will be on top of that list (if we do go ahead with it).
If we do go that way, we'll at least adopt the Nginx Webmin module and start maintaining it ourselves. Although we may actually drop Webmin altogether for v15.0. I'm pretty keen on swapping it out for Ajenti but we'll have to see. Ajenti actually has a ton less modules than Webmin, but it's written in Python (our language of choice; Webmin is written in Perl) so developing new modules (that we'd push back to Ajenti so everyone benefits - even non TurnKey Ajenti users...) shouldn't be too big a deal.
I'd be really interested to hear your thoughts, preferences and rationale for preferring Nginx and any response you may have to the points I have raised.
A few reasons...
Here's a few reasons OTTOMH (some are sort of related):
FWIW, I still think that the massive rise in Nginx usage is at least in part due to the fact that it's "cool", rather than any particularly good technical reason. FYI, despite claims that it is fundamentally better, one of our hosting partners has demonstrated that that's not always the case. Given sufficient resources, in many scenarios, the performance difference between Apache and Nginx is negligible.
On the flip side, I would argue that under low resource scenarios, and using non-optimized config, Nginx will almost always perform better than Apache. Many users don't have the knowledge or inclination to performance tune Apache. As the tuning needs to take into account the normal load and resource availability of the server, we can't pre-tune it any more than we currently do. So OOTB, end users will almost always notice an improvement been an untuned Apache and an untuned Nginx.
Also the flipside of being less adaptable and less featureful, is that it's also going to generally have a smaller codebase and therefore less attack vectors and less likelihood of unnoticed security related bugs. So essentially it should be more secure OOTB.
None of the above Apache "advantages"/Nginx "disadvantages" are complete showstoppers for many (probably most) of the appliances that currently use Apache. And in fact, we are considering moving some appliances to Nginx for our next release (v15.0). WordPress is definitely one that will be on top of that list (if we do go ahead with it).
If we do go that way, we'll at least adopt the Nginx Webmin module and start maintaining it ourselves. Although we may actually drop Webmin altogether for v15.0. I'm pretty keen on swapping it out for Ajenti but we'll have to see. Ajenti actually has a ton less modules than Webmin, but it's written in Python (our language of choice; Webmin is written in Perl) so developing new modules (that we'd push back to Ajenti so everyone benefits - even non TurnKey Ajenti users...) shouldn't be too big a deal.
I'd be really interested to hear your thoughts, preferences and rationale for preferring Nginx and any response you may have to the points I have raised.