哥,咱写的服务器,你怎么能直接在这里面处理业务代码呢?我想看的是服务器把请求转发给脚本文件,脚本文件处理完的结果返回给服务器,服务器返回给客户端。
这个问题挺好的,先给同学点个赞,这里可以归纳为两个问题,我们捋一下。
HTTP服务器是否应该处理HTTP业务?
HTTP应该怎么转发请求到脚本应用?
首先第一个问题,HTTP服务器是否应该处理HTTP业务?
要看什么性质的HTTP服务器,有专门做代理的,比如Nginx,也有应用服务器Apache,这些都是HTTP服务器,他们可以处理HTTP请求,也可以将HTTP请求转发给后端应用,当然主要功能是转发请求。
除了这类HTTP服务器,我们还可以看到嵌在Web框架中的HTTP服务器,比如Django、Tornado等等,这些嵌进去的,也是HTTP服务器。
我们常见的Nginx、Apache,他们一般将HTTP请求转发到后端应用,但不代表他们不处理业务逻辑,事实上Nginx也有做HTTP的业务处理,比如Nginx 404行为,Nginx默认页等等,这些都是Nginx处理的业务逻辑。
而这些行为,在原理上看来,都是和本课程一样的。
第二个问题,HTTP应该怎么转发请求到脚本应用?
首先这里需要明确一点,绝大多数的在代理服务器后面的应用,当暴露端口的时候也是一种HTTP服务(除了一些用unix socket、wsgi、fastcgi等协议启动的),对于转发的过程,如果采用了协议,那么就通过协议组件去把数据封装起来发送给应用,如果直接暴露端口的话,那就是直接转发。
这里需要理解一点的就是,不管是经过协议、还是经过端口暴露的方式,后端应用如果是基于web框架去开发的话,都需要按照报文格式去把报文解析出来,然后做处理、再返回,所以在应用上,也会做一次HTTP请求的分析。
以上。
相信通过这个解答,同学可以对HTTP服务器有个深刻的认识,希望可以给你解答这个问题。