Compared with Nginx, Apache
NginxApache Summary
The core difference between the two lies in that apache is a synchronous multi-process model. One connection corresponds to one process, while nginx is asynchronous. Multiple connections (tens of thousands of connections) can correspond to one process.
Generally, nginx is used for web services that require performance. If you do not need performance stability, consider apache. The implementation of various functional modules of the latter is better than that of the former. For example, the ssl module is better than the former and has many configuration items. The epoll (kqueue on freebsd) network I/O model is the root cause of high nginx processing performance, but not all of the situations are epoll winning, if only a few files are provided for the static service, the select model of apache may be higher than epoll. Of course, this is just a hypothesis based on the principles of the network I/O model. The real application still needs to be tested.
A more common solution is that front-end nginx is better compatible with anti-concurrency and backend apache clusters.
Reference: blog Garden (the original article is too messy and I cannot bear it)