@HUST-SuWB
2018-07-11T08:59:38.000000Z
字数 1016
阅读 384
Finlabtech
(https://www.cnblogs.com/fuhuixiang/p/4529011.html)
Web服务器的工作方式主要有三种:多进程、多线程以及异步。其中多进程最稳定,异步最高效,而多线程则介于两者之间。我们比较常接触的Web服务器包括Apache、Nginx等,Nginx就是以异步的方式工作,而Apache则即支持多进程(prework模式)也支持多线程(worker模式)。
客户端请求达到服务端的具体处理工程可以总结为
1.首先我们客户端发送一个请求到Web服务器,请求首先是到网卡。2.网卡将请求交由内核空间的内核处理,其实就是拆包了,发现请求的是80端口。3.内核便将请求发给了在用户空间的Web服务器,Web服务器接受到请求发现客户端请求的index.html页面。4.Web服务器便进行系统调用将请求发给内核。5.内核发现在请求的是一页面,便调用磁盘的驱动程序,连接磁盘。6.内核通过驱动调用磁盘取得的页面文件。7.内核将取得的页面文件保存在自己的缓存区域中便通知Web进程或线程来取相应的页面文件。8.Web服务器通过系统调用将内核缓存中的页面文件复制到进程缓存区域中。9.Web服务器取得页面文件来响应用户,再次通过系统调用将页面文件发给内核。10.内核进程页面文件的封装并通过网卡发送出去。11.当报文到达网卡时通过网络响应给客户端。
Apache可以说是最流行的Web服务器了,而且已经流行了很多年,相信大家在开发过程中肯定使用过Apache的软件。作为Web服务器而言,Apache运行稳定,功能强大,而且生态也非常完善。
Apache的安装非常方便,默认的配置也可以直接使用。如果需要另外的配置如虚拟主机之类的,可以参考官方文档,非常详细:Apache官方文档
Nginx也是非常流行的Web服务器(其实也可以用作邮件服务器)了,现在基本上反向代理大家都会选择使用Nginx来做,高效,低耗。官方文档:Nginx官方文档
Nginx的优势是处理静态请求,CPU内存使用率低,Apache适合处理动态请求,所以现在一般前端用Nginx作为反向代理抗住压力,Apache作为后端处理动态请求。
Nginx反向代理+Apache动态代理的架构可以参考反向代理架构