简单web服务器示例图

Web 服务器是客户端与后端应用之间的入口层,负责接收 HTTP/HTTPS 请求,并对请求进行处理、转发、优化和保护。

从实际开发角度,重点掌握下面这些就够全面了:

职责 作用 典型例子
① 接收 HTTP/HTTPS 请求 监听端口、建立连接、解析 HTTP 请求 监听 80/443
② 静态资源服务 直接返回 HTML、CSS、JS、图片、视频等 /static/logo.png
③ 路由与请求分发 根据域名、URL 等决定请求交给哪个服务 /api/user/* → user-service
④ 反向代理 将客户端请求代理到后端应用服务器 Nginx → Spring Boot
⑤ 负载均衡 将请求分配给多台后端服务器 Server1 / Server2 / Server3
⑥ HTTPS / TLS 管理证书、TLS 握手、加解密 HTTPS → 内部 HTTP
⑦ 缓存 缓存静态资源或响应,降低后端压力 Cache-Control、代理缓存
⑧ 压缩与性能优化 减少网络传输量、提高响应速度 gzip、Brotli
⑨ 安全与访问控制 限流、IP 控制、请求大小限制等 单 IP 每秒最多 100 请求
⑩ 日志与监控 记录请求、响应状态、耗时、错误 access.log、error.log
⑪ 错误处理 处理异常情况并返回合适的 HTTP 响应 404、502、503

最核心的工作流程

把上面所有东西放到一张逻辑图里,就是:

arduino 复制代码
                    客户端
              浏览器 / App / 爬虫
                     │
                     │ HTTP/HTTPS
                     ↓
          ┌─────────────────────┐
          │     Web Server      │
          │   Nginx / Apache    │
          │                     │
          │ ① 接收请求          │
          │ ② 解析请求          │
          │ ③ 路由/分发         │
          │ ④ HTTPS             │
          │ ⑤ 安全/限流         │
          │ ⑥ 缓存/压缩         │
          │ ⑦ 日志/监控         │
          └─────────┬───────────┘
                    │
          ┌─────────┴──────────┐
          ↓                    ↓
      静态资源              动态请求
          │                    │
     HTML/CSS/JS               │ 反向代理
     图片/视频                 ↓
          │             ┌──────────────┐
          │             │  后端应用    │
          │             │ Spring Boot  │
          │             │ Go / Python  │
          │             └──────┬───────┘
          │                    ↓
          │              MySQL / Redis
          │                    │
          └──────────┬─────────┘
                     ↓
                  返回响应

这里尤其要区分 Web Server 和后端应用:

Web Server 更关心"请求怎么进来、往哪里送、怎么安全高效地送"。

后端应用更关心"这个请求具体要执行什么业务逻辑"。

比如:

bash 复制代码
GET /api/users/1001

可能经历:

scss 复制代码
浏览器
  ↓
Nginx
  │
  ├─ HTTPS 解密
  ├─ 限流
  ├─ 记录日志
  ├─ 判断路由
  │
  ↓
user-service
  ↓
Spring MVC 路由
  ↓
UserController
  ↓
getUser(1001)
  ↓
MySQL

路由也可以这样理解

markdown 复制代码
Web Server 路由
     ↓
"应该交给哪个服务?"

后端框架路由
     ↓
相关推荐
狼爷37 分钟前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
郑州光合科技余经理39 分钟前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源1 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源1 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6661 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
周杰伦fans2 小时前
8GB显存下模型量化实战指南
人工智能·后端·c#
小蒜学长2 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统
IT_陈寒3 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
打工仔折腾 AI4 小时前
把AI Agent托管在家用电脑:UU远程终端与端口映射实测记录
人工智能·后端·python·langchain·ai agent 实战
vx_Biye_Design4 小时前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express