转自:https://www.zhihu.com/question/26773561,https://www.zhihu.com/question/493164325
https://cnodejs.org/topic/5ab9b59652d7d3a8698a4828
1.前端服务器
是指网站的入口,负责接收用户的请求,将请求转发给后端服务器。网页前端和后端能否分别部署到不同的服务器上。比如手机app,后端服务不部署在手机上。
通常来说,前端会部署在代理服务器上,比如nginx,后端一般单独部署在应用服务器上,通过代理服务器调用。
- 为什么前端要放在代理服务器上呢?主要是因为前端主要是资源文件,可以说是静态文件,执行主要在浏览器上,即用户端,存放的位置越靠前,访问速度越快;【前段服务器离用户越近越好,这就是CND吧?】
- 后端的运行主要在服务器上,所以需要有多台性能不错的机器来运行,把结果返回给代理服务器,代理服务器再返回给用户。
请求流程:
- 浏览器请求前端服务器,下载静态文件(比如 index.html 以及必要的 css 和 js 文件)
- 浏览器执行第一步里下载下来的 js
- 前端 js 程序发送 AJAX 请求到后端服务器
- 后端服务器接受 AJAX 请求并处理之,最后返回 HTTP 响应
- 前端 js 程序接收 AJAX 响应并更新页面
2.Web服务器
https://www.huaweicloud.com/zhishi/edit-5823475.html
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。3.Web和应用服务器的区别
https://cnodejs.org/topic/5ab9b59652d7d3a8698a4828 Tomcat是Application Server应用服务器,Apache和Nginx则是Web Server Web服务器,这两者有区别。- Web Server一般是完整实现了HTTP协议的服务器,负责接收用户的HTTP请求,然后响应请求,至于这么处理这个请求,就要交给Application Server去处理了;
- Application Server里面跑着像PHP,Python的脚本;
- Web Server和Application Server之间需要通过协议沟通,比如CGI、WSGI这类东西;
- 虽然一些Application Server也能充当Web Server,但是它们对HTTP协议的实现并不完整,因此生产环境下不会这么用。