互联网从90年代开始席卷全球,现如今基本上所有业务都可以在互联网上完成,互联网已经成为我们生活中不可或缺的一部分 。
那么互联网web协议是怎样的呢?可以概括为访问者从给定的Web站点请求文档,而DNS和IP系统将该请求转发到正确的计算机 。这台托管请求的网页的计算机将把网页提供给访问者 。
网页本质上是html文档 。为了能够向访问者提供不同的网页,提供服务的机器需要一个服务器程序 。Nginx和Apache就是这个提供服务的的软件程序,它们可以处理请求进行分析,然后将用户所需要的文档信息返回给访问者 。

文章插图
Nginx与Apache

文章插图
Nginx和Apache都是非常??流行的Web服务器 。
- Apache于1995年首次发布,Nginx于2004年发布 。
- 两者都被全球500强的大型公司使用 。
- Nginx的市场份额多年来一直在稳定增长 。
- 在某些情况下,Nginx在性能方面更具有竞争优势 。
apache受欢迎的一个点就是他的.htacess文件配置管理 。
Apache使用.htaccess进行配置,它为处理传入请求的方式提供了很大的灵活性 。不同的重定向规则,最大上传文件大小,URL重写,内存限制,目录保护,header头信息,cookie,查询字符串操作 。
在服务器根目录中,目录树中的每个级别或目录都可以具有自己的.httaccess文件,并具有自己的配置 。
对于共享主机提供商,这是一个梦想,因为他们可以在同一台计算机上为数百个用户提供一种配置其网站服务方式的方式,而不会影响其他网站 。客户可以在受限的共享托管环境中配置许多详细信息,而无需接触全局服务器配置 。
但是,这种灵活性是以性能为代价的:“无论您实际上是否使用它们,允许.htaccess文件都会导致性能下降!”
每次启用.htaccess文件时,Apache都必须从请求的URL或文件中遍历整个目录树,直到所有的更高级别,直到服务器的根目录,然后针对每个请求加载它们 。
apache还有一个受欢迎的点是他的模块机制 。
Apache便允许用户安装模块,然后根据需要启用/禁用它们 。
apahce有很多好用的模块,比如压缩,加密,日志记录,重定向到更高级的内容,例如使用高级语法编辑请求和响应,正是有了这些模块,才让Apache处理请求更加多样化 。
nginxNginx(也称为nginx或NGINX)是在2004年由俄罗斯开发人员Igor Sysoev首次公开发行的 。
Nginx是专门为解决Apache Web服务器的性能限制而编写的 。

文章插图
Nginx发布后,主要用于提供静态文件,并在Apache安装之前用作负载平衡器或反向代理 。随着网络的发展以及对速度和硬件使用效率的高要求,越来越多的网站开始使用Nginx完全替换Apache,这也要归功于更成熟的软件 。
现在市场上nginx的份额已经超过了Apache,很多大公司都开始采用nginx作为后端的web服务器,有些大公司甚至会修改nginx的部分代码来使用,比如我们熟知的Tengine 。
nginx最初设计的时候就是模块化的思想,它的所有功能都是采用模块形式提供的,需要什么功能,只要对应加载相应的模块就可以 。
nginx一直都在全速发展着,目前最新的web技术quic和http3也已经在最新版的nginx中提供实现了 。

文章插图
缓存apahce和nginx都提供了缓存功能 。apache有mod_cache模块,nginx也有fastcgi缓存 。可以说没有缓存的web系统几乎不可能支撑如今高访问的情况 。当然,说道缓存,最专业的还是Varnish HTTP 。不过因为nginx可以和它完美地结合,所以这也是越来越多人拥抱nginx的一个理由 。
apache和nginx处理请求方式apache和nginx最大的不同在于它们处理请求的方式 。
apache使用MPM(Multi-Processing-Modules)处理请求 。
早期的mpm是prefork模块 。在这种模式下,Apache会在每个请求中生成一个线程的新进程 。该模块与mod_php一起使用,意味着Apache服务器在每个进程中都嵌入了一个PHP解释器,虽然可能这个请求只是请求css等静态文件 。这是非常低效的 。
推荐阅读
- Nginx中配置https中引用http的问题
- Nginx 热部署和日志切割,你学会了吗?
- Nginx-config的配置
- 从原理到实战,彻底搞懂Nginx
- nginx注册成windows服务的解决方法
- Nginx 的这些妙用,你都 get 到了吗?
- Nginx+SpringBoot实现负载均衡
- Apache中将HTTP重定向至HTTPS
- PHP服务器Apache与Nginx的对比分析
- php+nginx实现自动化部署脚本
