NGINX 和 Apache
HTTP 服务器软件种类繁多,各有利弊。最常用的两个 HTTP 服务器是 NGINX 和 Apache。让我们来看看这两个软件,看看哪一个更适合我们的需要。
Apache
Apache 是使用最广泛的 HTTP 服务器,深受大多数管理员的喜爱。管理员选择 Apache 的原因是其灵活性、广泛的支持、强大的功能以及可用于大多数解释型语言(如 PHP)的模块。由于 Apache 可以处理大量的解释型语言,因此它不需要与其他软件通信来满足请求。Apache 可以通过前置进程(跨线程生成进程)、工作进程(跨进程生成线程)和事件驱动进程(与工作进程相同,但为保持连接设置了专用线程,为活动连接设置了单独的线程)处理请求;因此,它提供了更大的灵活性。
如前所述,每个请求都将由一个线程或进程处理,因此 Apache 消耗的资源太多。当涉及到高流量应用程序时,Apache 可能会降低应用程序的运行速度,因为它不能很好地支持并发处理。
NGINX
NGINX 旨在解决高流量应用程序的并发问题。 NGINX 提供异步、事件驱动和非阻塞请求处理。 由于请求是异步处理的,NGINX 不会等待请求完成来阻塞资源。
NGINX 创建工作进程,每个工作进程可以处理数千个连接。 因此,几个进程可以同时处理高流量。
NGINX 不为任何解释语言提供任何内置支持。 为此,它依赖外部资源。 这也很好,因为处理是在 NGINX 外部进行的,NGINX 只处理连接和请求。 大多数情况下,NGINX 被认为比 Apache 更快。 在某些情况下,例如静态内容(提供图像、.css 和 .js 文件等),这可能是正确的,但在当前的高性能服务器中,Apache 不是问题; PHP 是瓶颈。
Apache 和 NGINX 适用于各种操作系统。在本书中,我们将使用 Debian 和 Ubuntu,因此所有文件路径都将根据这些操作系统进行说明。 |
如前所述,我们将在本书中使用 NGINX。