一直搞不太清楚所谓后端开发和服务器之间的区别,最近看了两篇博客:apache是什么,uwsgi、wsgi和nginx的区别和关系。对所谓的相关概念有了个大概的了解。
所谓的后端指的是类似于spring、django、flask之类的处理业务逻辑的部分,对于拿到的请求做处理,数据库读写,资源的返回等等。
前端,虽然有很多前端框架和开发技巧能够简化和规范化开发流程,但是归根结底是三个东西,html,css和js,而我们的http请求到了后端那里之后请求某个网页资源什么的,后端就把相应的东西返回回来。
这样子看来似乎只需要后端和前端就可以搭建服务器了,那所谓的web服务器这种词语又是指什么呢?是因为由于客户连接的增多,发现这部分处理的代码增加,规模越来越大,其任务越来越专门化,于是单独分开出来。现在的请求,像http是基于tcp的,tcp连接通过服务器机器的端口先到了服务器软件这里,然后通过服务器的软件做一些处理,之后发给后端做进一步处理,后端把某些数据文件返回给服务器,服务器再重新通过连接返回回去。“Apache”就是类似的这种服务器软件。
那么服务器软件和后端框架的开发都是分开的,不同人在不同的时间做不同的事情,如何确保服务器返回的数据格式能够被后端框架正确的理解和处理呢,于是就有了wsgi,这是一份规范,约定了一种服务器软件和后端框架之间数据交换的格式,一般来说,在实现了wsgi的服务器和后端这个范围之中,任意一个服务器软件都能够和任意一个后端框架做数据交换。
而uwsgi则是一个类似apache的服务器软件,实现了wsgi这个规范。
最后,nginx是一个反向代理服务器,当连接特别多的时候需要部署多台服务器,那么如何为这些服务器分配连接就由nginx完成。作为客户只需要在浏览器中输入www.xxxxxx.com即可,并不需要直到具体连接到哪台服务器,而这个访问会首先到达nginx,然后nginx会根据其他服务器的地址将这个连接发送过去。