1.反向代理
1.1 原理
- 
用户请求先到 Nginx,再由 Nginx 把请求转发给后端的应用服务器(比如 Tomcat、Node.js、Spring Boot)。
后端 php python java(我们使用时java后端 tomcat 微服务 ) 后端专业语言 应用服务器/业务服务器
 - 
Nginx 在这里就像"中转站",客户端只知道自己连的是 Nginx,不知道真正提供服务的是哪台后端。
 
流程如图所示

1.2 实验配置
编辑 nginx.conf,在 server 块里添加:
server {
    listen 80;
    server_name localhost;
    location / {
        proxy_pass http://127.0.0.1:8080;   # 把请求转发到后端 8080 端口       反向代理
        proxy_set_header Host $host;        # 保留原始的 Host 头
        proxy_set_header X-Real-IP $remote_addr;   # 获取客户端真实 IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
        保存配置后,执行:
nginx -s reload
        现在访问 http://localhost/,实际会由 Nginx 转发到 http://127.0.0.1:8080/。
2.负载均衡
Nginx 的负载均衡是它最常用的功能之一,可以将客户端请求分发到多台后端服务器,提高系统的并发能力、可用性和稳定性。
2.1 基本原理
Nginx 作为反向代理服务器,接收来自客户端的请求,然后根据配置的负载均衡策略,将请求转发到后端的多个应用服务器(upstream server)。
好处:
- 
提高性能:分担单台服务器压力
 - 
高可用性:某台服务器宕机,Nginx 自动转发到其他正常的节点
 - 
可扩展性:轻松添加或移除后端节点
 
如图所示

2.2 常见负载均衡策略
轮询(Round Robin)
最少连接数(Least Connections)
IP 哈希(IP Hash)
加权轮询(Weighted Round Robin)
最少时间算法(Least Time)
3.后端 tomcat
3.1 Tomcat 的本质
Tomcat 本质上是一个 Servlet 容器,也可以称作一个轻量级 Web 应用服务器(Web Server + Servlet Container)。 它的主要职责是:
- 
接收 HTTP 请求(内置了一个简单的 HTTP 服务器)
 - 
将请求分发给对应的 Web 应用(基于 URL 映射)
 - 
执行 Servlet / JSP 并生成响应
 - 
返回 HTTP 响应给客户端
 
换句话说,Tomcat 是一个 Java Web 应用运行环境,可以托管基于 Servlet、JSP、Spring MVC、Spring Boot(war 部署)等的应用。
3.2 运行原理
Tomcat 的核心工作流程可简化为以下几个步骤:
- 
启动
- 
加载
server.xml配置,启动各个Connector(监听端口,如 8080) - 
初始化
Service、Engine、Host、Context组件 - 
创建并初始化
Servlet 容器 
 - 
 - 
接收请求
- 
Connector监听 HTTP 请求(基于 NIO/线程池) - 
请求被封装为
Request对象 
 - 
 - 
请求分发
- 
Mapper根据 URL → 找到对应的Context(即某个 Web 应用) - 
找到对应的
Wrapper(某个 Servlet) 
 - 
 - 
执行 Servlet
- 
Tomcat 调用 Servlet 的
service()方法 - 
Servlet 处理请求,可能访问数据库或调用其他 API
 - 
返回
Response对象 
 - 
 - 
响应客户端
- 
Tomcat 将
Response转换为 HTTP 响应报文 - 
通过 Socket 返回给客户端浏览器
 
 - 
 
如图所示
