我正在认真考虑从Apache切换到nginx,我想更好地理解nginx - 我也不是Apache大师,所以我想我会在这些问题的答案中学到更多关于Apache的知识。我认为从我的问题中可以明显看出,我在这个领域真的有很多东西需要学习,并且可能有很多误解。但那就是我要问的原因:
那么nginx与Apache的prefork MPM没有相同之处吗?如果是这样, 那么nginx与工人MPM有何不同?如果是这样的话 工人MPM,那么为什么不存在关于线程的相同问题 安全性使人们不使用Apache的mod_php与工人MPM?
如果某个流程是一个操作系统流程,那么流程就可以 有多个线程(类似于Java可执行文件的Java) 单个进程,它可以启动多个线程),怎么做 '要求'适合这个模型?我理解客户 请求不会导致使用nginx的新操作系统进程,但它会导致a 新线程还是一个线程可以同时处理多个请求?或者如果没有,那么多个顺序连接,当一个线程完成一个请求时,它可以处理另一个请求?
“请求”和“连接”之间的关系是什么?如果客户端发出10个请求,这10个连接,还是1个连接?连接持续多长时间?我意识到,如果客户端在一个月内发出10个请求,那么这些请求可能是同一会话的一部分(如果会话cookie仍然存在),但肯定不会是相同的连接。那么构成连接的界线在哪里?
从nginx使用PHP有哪些不同的方法?除非我 错了,Apache有3个(mod_php,mod_fastcgi和mod_fcgid)。对于 nginx我听说过PHP-FPM和FastCGI。还有其他选择吗? 这些是唯一的两种方式,如果是这样,它们如何区别于每种方式 其他?我一直在阅读PHP-FPM是做FastCGI的另一种方式 所以我不确定区别是什么。
如果有10个客户端连接到访问PHP页面的服务器, 如果使用的话,在运行'top'命令时我会看到多少个进程 nginx,他们将被命名为什么? (我想答案取决于前一段中对问题的回答。)如果这是Apache prefork MPM和 mod_php,如果我理解正确那么我想我会看到10个httpd 运行'top'时的流程。
我的服务器上现在将占用多少个端口?之前它只是Apache的80端口。现在我想象nginx将会有80端口,还有一些其他端口供nginx与实际处理PHP的东西进行通信。那运行PHP的东西究竟是什么,是'PHP'可执行文件,还是'FastCGI',还是其他东西?
因此,如果将nginx配置为使用多个“后端”PHP处理器(这可能吗?),会有多少个APC实例?如何将来自nginx的请求交给他们(例如,它会使用会话cookie将同一用户发送回同一个PHP处理器吗?)
我知道这么多问题,但希望有些人真正了解这一切,这也有助于我理解。我真的很想!感谢。
答案 0 :(得分:3)
本文应该回答几乎所有内容:http://arstechnica.com/business/news/2011/11/a-faster-web-server-ripping-out-apache-for-nginx.ars关于Apache v.s. nginx的
至于其他问题:
3)请求只是对服务器上某些资源的请求。 GET /index.html
是一个请求。 POST /formhandler.php
是另一个请求。连接是字面上的TCP套接字设置,它将客户端浏览器链接到服务器。连接是请求将通过的连接。一个连接可以处理多个请求,或者它只能处理一个请求。这取决于是否允许/请求HTTP Keep-Alives,以及当天客户端和服务器的心情。最好的情况是,1个连接处理10个请求,只需要一个TCP握手序列。最糟糕的情况是,每个请求都通过一个单独的连接,需要10个tcp握手。
6)服务器上将打开一个或两个侦听端口(端口80为常规端口,443为ssl,可能)。可以将任意数量的请求复用到单个端口上。网络服务器永远不会只有一个端口保持打开状态,但也不应该超过1或2个。