Connector是Tomcat接收处理请求的核心组件,需正确配置port、protocol、redirectPort等属性;HTTPS需设scheme=”https”和secure=”true”并指定证书;调优参数包括maxThreads、URIEncoding=”UTF-8″等;多Connector共存时注意端口规划与安全限制。

Tomcat 的 server.xml 中,Connector 是核心组件之一,它定义了 Tomcat 如何接收和处理客户端请求。配错 Connector 可能导致端口冲突、HTTPS 不生效、上传失败、中文乱码甚至服务无法启动。
Connector 基本结构与必填属性
每个 Connector 用一个 标签定义,嵌套在 内。最简 HTTP 配置如下:
关键属性说明:
- port:监听端口,必须唯一,不能被其他进程占用
-
protocol:协议类型,常用值为
HTTP/1.1(使用默认 HTTP 连接器)或org.apache.coyote.http11.Http11Nio2Protocol(启用 NIO2,支持高并发) - connectionTimeout:连接建立后等待首个请求的超时时间(毫秒),设为 0 表示永不超时(不推荐)
-
redirectPort:当请求需要重定向到 HTTPS 时跳转的目标端口(如配置了
security-constraint要求 CONFIDENTIAL)
启用 HTTPS 的 Connector 配置
要支持 HTTPS,需添加一个基于 SSL/TLS 的 Connector,并指定证书路径。示例(JDK 9+ 推荐使用 PEM 格式,旧版常用 JKS):
maxThreads=”200″ scheme=”https” secure=”true”
keystoreFile=”/path/to/keystore.p12″ keystoreType=”PKCS12″
keystorePass=”changeit” keyAlias=”tomcat” />
注意要点:
-
scheme=”https” 和 secure=”true” 必须同时设置,否则 Servlet 中
request.isSecure()返回 false -
keystoreFile 路径建议用绝对路径;若用相对路径,以 Tomcat 的
bin目录为基准 - 使用 PKCS12(.p12/.pfx)比 JKS 更安全且通用;如用 JKS,设
keystoreType="JKS" -
keyAlias 是密钥对别名,生成证书时指定,可通过
keytool -list -v -keystore xxx查看
常见调优与问题修复参数
生产环境常需调整以下参数来适配业务场景:
- maxThreads:最大工作线程数,默认 200;高并发可设为 500–1000,但需配合系统资源评估
- minSpareThreads:最小空闲线程,默认 10;可设为 25–50 减少冷启动延迟
- acceptCount:等待队列长度,默认 100;当所有线程忙时,新连接进入该队列;设太大易积压,太小会直接拒绝
- URIEncoding=”UTF-8″:强制 URL 解码为 UTF-8,解决 GET 请求中文参数乱码(必须加)
- useBodyEncodingForURI=”true”:让 URI 解码也参考请求体编码(如 POST 表单中指定了 charset),与上一项配合更稳妥
- maxPostSize:限制 POST 数据大小(字节),默认 2MB;上传大文件需调大,设为 -1 表示不限制(有风险)
- disableUploadTimeout:上传大文件时是否禁用超时,默认 false;建议设为 true 避免上传中途断连
多个 Connector 共存与端口规划
一个 Service 下可配置多个 Connector,例如同时开放 HTTP(自动跳转 HTTPS)、HTTPS、AJP(供 Apache httpd 反向代理):
注意事项: