中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系( 二 )

  • 服务器接收到资源请求并以之前协商好的方式解包并处理 。
  • 服务器请求的资源封装成 HTTP 数据包并返回给用户代理 。
  • 接下来重点说说服务器端的工作原理 , 如下图:
    中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系
    本文插图
    TCP 监听模块:服务器监听某个端口(一般默认是 8080 端口 , 用户可以设置其他端口) , 以建立和用户代理之间的连接 。 一旦建立连接 , 用户代理的后续 HTTP 请求将不用再进入监听模块 。
    预处理:此处主要做三件事 , 从 TCP 报文中获取 HTTP 请求报文 , 根据和用户代理的协商进行解密 , 解压 , 安全处理等等 。 根据服务器自身的配置进行安全处理 , 建立会话状态等等 。
    UR 路由:解析 URL 字符串和动作以确定用户代理请求的资源 , 根据匹配规则(通常根据正则表达式+后缀)路由到静态资源处理模块或动态资源处理模块 。
    静态资源处理模块:负责找到静态资源 , 比如 HTML/JavaScript/CSS 文件/图片/图像 , 确定内容是字符流或者字节流 , 并确定对应 MIME 。
    比如 HTML 生成 MIME 为 text/html 的字符流 , mpeg 视频文件生成 MIME 为 video/mpeg 的字节流 。
    动态资源处理模块:运行业务逻辑处理 , 动态决定返回的资源内容和类型 , 内容和类型的处理原则同上 。
    后处理:根据和用户协商的协议进行加密 , 压缩 , 安全处理等等 。
    【中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系】资源输出模块:把处理好的内容和类型封装成 HTTP 报文 , 往 TCP 连接另一头的用户代理发送 TCP 报文(内容是 HTTP 报文) 。
    主流 Web 服务器
    包括 Apache、IIS 、Nginx 市场占有率如下图:
    中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系
    本文插图
    还有比较多使用 Tomcat , Jetty , WebSphere , WebLogic , Kerstrel 等等 。
    Web 应用程序容器概念与基本原理
    Web 应用程序容器的由来
    Web 服务器的出现标志着 WWW 时代的到来 , 世界变得更加平面化 。 当初尝到甜头的开创者们开始不满足于在互联网上获取静态资源 , 于是出现了 CGI 脚本来动态获取资源 。
    再后来网络发展方向也是朝着增强 Web 服务器动态获取资源的能力前进 。 以下是代表性的动态技术:
    中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系
    本文插图
    Web 应用程序容器的基本工作原理
    一般情况下 , Web 应用程序容器是以下构成体系:
    中年一文看懂web服务器、应用服务器、反向代理服务器区别与联系
    本文插图
    注:浅蓝色的模块是实现业务程序的主要使用模块
    相对于 Web 服务器 , 该容器新增或强化了以下模块: