HTTP中间件
当我们在浏览器中输入一个网页链接后,浏览器基于HTTP(s)
传输协议向相应的服务器发送一个请求,服务器收到相应的请求后经过处理,返回相应的信息给浏览器,然后由浏览器解析http
中的内容,以网页的形式表现出来。
服务器负责接收请求,并在处理之后返回相应的数据,而其中又可以细分为处理http
连接的服务部分和执行服务内容的应用部分(WordPress
使用PHP
生成需要的页面,就属于应用部分)
而不论应用部分执行的是何种应用,处理http
连接的部分几乎是相同的,所以出现了专门处理http
连接的中间件,目前最常见的是Apache
和Nginx
。
Apache
正式名称是“Apache HTTP Server
”,是一款开源的HTTP
服务器中间件,诞生于1995年,曾经是HTTP
服务领域的龙头老大,拥有大量的用户和丰富的社区资源。Apache
的一大优点就是方便与Wordpress
等CMS软件进行集成,只需要简单的设定就能搭建一个基于CMS的网站。
Apache的内部处理模型
内部构造方面,Apache
采用多进程的方式,每有一个连接就会为这个连接开辟一个进程,专门用于处理这个连接上的请求,直到连接结束。这样做的好处是:
来自不同客户端的连接会立刻得到相应且互不干扰,而且不会因为某一个服务占用了较长的时间而使其它的连接得不到响应。
但是缺点也是显而易见的:
当同时访问数比较多的时候,
Apache
会建立大量的进程,占用过多的内存资源。大量线程间的调度也会造成CPU处理能力的大量浪费。
由此产生了被称为C10K
的难题,C即客户端(Client),10K是指1万,即不论服务器的性能和网络带宽有多高,Apache
都难以同时处理1万个以上的连接。
Nginx
读作Engine-X
,和Apache
一样也是用于HTTP
服务的开源中间件,诞生于2004年。Nginx
比Apache
的历史要短,但是正因为是后来者,Nginx
吸取了Apache
的教训,在设计初期就考虑到了处理大量连接时的效率问题,解决了诸如C10K
等随着互联网规模壮大而产生的难题。
Nginx的内部处理模型
Nginx
采用了非阻塞IO
和异步消息驱动的方式,即在称作worker
的线程中使用循环来处理队列中的连接请求。而根据硬件的情况,可以设定多个worker
线程,充分利用CPU
的核心资源。
解决了处理大量连接时消耗内存过多,调度效率低下的问题,同时还能充分的利用所有的CPU核心。在相同硬件下处理并发连接的能力是
Apache
的10到100倍。
但是Nginx
这种方式也不是没有缺点。
当服务器单核性能较差时,基于CMS的动态网站可能需要较长的时间来执行一个请求,此时来自其他客户端的请求将无法立即被执行。当
CPU
核心数较少,worker
线程不足时会更加明显。
好在现在服务器的性能越来越强,在AMD
的带领下CPU
核心数也越来越多,Nginx
的缺点足以被弥补,而高效的优势也愈发显现出来。
综合对比
Apache Nginx
处理能力有限10-100倍是否会被复杂任务阻塞否有可能会设定难度比较简单相对复杂社区资源丰富相对较少
近年来,Nginx
的市场占有率不断提高,2019年已经达到了和Apache
持平的水平。而对于有极大访问量的大型网站,可以看到访问量越大,Nginx
的占比也就越高。这也从侧面印证了Nginx
在处理大量访问时的优越性能。
负载均衡
Nginx
除了可以作为HTTP服务器使用,其强大的反向代理功能还被广泛地用作负载均衡前端服务器,逐渐取代了基于硬件的负载均衡器。
在Nginx
中可以配置若干个后端服务器,Nginx
在收到HTTP
请求之后按照一定规则(轮询,IP哈希,优先随机)等将请求转发给后端服务器,实现负载在多台服务器上的平均或加权分配。
同时作为负载均衡的前端还能缓存后端返回的数据,缓解后端服务器的压力。前端采用Nginx
做负载均衡限制每个服务器的连接数,后端服务器运行Apache
的模式也并不少见。
硬件负载均衡器的业界大佬F5 networks
在2019年收购了Nginx
,推出了包含收费服务的负载均衡解决方案Nginx+
。
以上是Apache HTTP和Nginx引擎哪个比较好的详细内容。更多信息请关注PHP中文网其他相关文章!

NGINX和Apache各有优劣,适合不同场景。1.NGINX适合高并发和低资源消耗场景。2.Apache适合需要复杂配置和丰富模块的场景。通过比较它们的核心特性、性能差异和最佳实践,可以帮助你选择最适合需求的服务器软件。

确认 Nginx 是否启动的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 检查端口 80 是否开放;3. 查看系统日志中 Nginx 启动消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

要关闭 Nginx 服务,请按以下步骤操作:确定安装类型:Red Hat/CentOS(systemctl status nginx)或 Debian/Ubuntu(service nginx status)停止服务:Red Hat/CentOS(systemctl stop nginx)或 Debian/Ubuntu(service nginx stop)禁用自动启动(可选):Red Hat/CentOS(systemctl disable nginx)或 Debian/Ubuntu(syst

如何在 Windows 中配置 Nginx?安装 Nginx 并创建虚拟主机配置。修改主配置文件并包含虚拟主机配置。启动或重新加载 Nginx。测试配置并查看网站。选择性启用 SSL 并配置 SSL 证书。选择性设置防火墙允许 80 和 443 端口流量。

服务器无权访问所请求的资源,导致 nginx 403 错误。解决方法包括:检查文件权限。检查 .htaccess 配置。检查 nginx 配置。配置 SELinux 权限。检查防火墙规则。排除其他原因,如浏览器问题、服务器故障或其他可能的错误。

在 Linux 中启动 Nginx 的步骤:检查 Nginx 是否已安装。使用 systemctl start nginx 启动 Nginx 服务。使用 systemctl enable nginx 启用在系统启动时自动启动 Nginx。使用 systemctl status nginx 验证启动是否成功。在 Web 浏览器中访问 http://localhost 查看默认欢迎页面。

在 Linux 中,使用以下命令检查 Nginx 是否已启动:systemctl status nginx根据命令输出进行判断:如果显示 "Active: active (running)",则 Nginx 已启动。如果显示 "Active: inactive (dead)",则 Nginx 已停止。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中