Answers:
Nginx绝对是托管Magento的一个不错的选择,它具有许多不错的(但很小的)好处,可以帮助改善站点性能。
Nginx与Apache之间的主要区别在于Nginx使用非阻塞事件IO,而Apache仅使用多线程/处理。有什么区别,为什么重要?好了,以Apache为例,假设它有5个线程,它可以在任何给定时间处理5个请求。如果这些线程之一需要很长时间才能完成,则只剩下4个线程来处理任何进一步的传入请求。如果所有5个线程都被锁定,则只有一个线程完成后,才能处理传入的请求。
使用事件IO,当线程接收到对某事的请求时,它会触发一个事件并直接进入下一个请求。事件回叫时,它将响应传递给相关客户端。
这大致类似于异步javascript的工作方式。您触发AJAX请求,然后继续进行直到获得回调。
这种现代方法非常适合于服务许多小型静态文件,而不会产生大量线程或辅助系统进程的开销。
Nginx的另一个好处是其内存占用少。Apache支持很多东西,并且这样做具有很高的内存和计算资源。您可以将其削减,但是Nginx从头开始构建,以节省内存。
差异并不大,但是随着您扩展到成千上万的请求,这些细微的差异总会产生很大的差异。
现在重要的是要记住,Magento应用程序中最大的性能瓶颈是PHP代码的执行。在这里,Apache和Nginx之间的性能差异基本上可以忽略不计。重要的是要使用PHP-FPM,以及将工人MPM与Apache配合使用(并且绝对避免使用prefork / mod-php)。主要原因是,只有在需要执行PHP代码时才调用PHP解释器,并且可以有效地使用APC之类的操作码缓存软件(这是获得最大的性能提升)。
最后要说的是:某些模块/应用程序希望使用Apache,并且文档可能适合使用ModRewrite或.htaccess文件。Nginx中支持ModRewrite样式,但不支持按目录的.htaccess样式解决方案。
就个人而言,我喜欢Nginx,因为它可以高效地提供静态内容,设置PHP-FPM非常容易,而且我非常喜欢其配置语法。这不是解决性能问题的灵丹妙药,而是值得考虑的强大灵活选择。