Tomcat 核心原理

核心架构:Connector + Container

1
2
3
4
5
6
7
8
9
10
11
客户端

Connector:接收/解析 HTTP

Engine

Host:虚拟主机

Context:Web 应用

Wrapper:Servlet
  • Connector:处理网络连接、HTTP、线程。
  • Container:负责请求路由和 Servlet 执行。
  • Tomcat:主要运行 Java Web 应用,不适合承担专业静态资源、SSL、负载均衡。

反向代理

生产常见架构:

1
Client → Nginx → Tomcat

Nginx:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
upstream tomcat {
server 127.0.0.1:8080;
}

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://tomcat;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

Tomcat 获取真实 IP:

1
2
3
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
protocolHeader="x-forwarded-proto"/>

一句话:

Tomcat = Java Web 容器;Nginx = 接入层/反向代理;Connector 负责网络,Container 负责业务请求。