You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复Apache Coyote漏洞后,嵌入式Tomcat误绑定8080端口的解决方法

问题:嵌入式Tomcat修复Apache Coyote漏洞后端口变回8080的解决办法

问题背景

我在Java项目中使用嵌入式Tomcat服务器,最初创建服务器的代码如下:

Tomcat _tomcat = new Tomcat();

我已配置Tomcat使用9001端口,此前运行一切正常。

为修复Nessus扫描检测到的Apache Coyote漏洞,我修改了代码:

Tomcat _tomcat = new Tomcat();
_tomcat.getConnector().setXpoweredBy(false);
_tomcat.getConnector().setProperty("server", "");

修改后,Tomcat自动绑定到未配置的8080端口,导致多实例运行时出现端口绑定失败错误。

解决方案

核心原因是调用getConnector()时,若Tomcat尚未初始化自定义端口的连接器,会自动创建一个默认使用8080端口的连接器,覆盖了原有端口配置。

需调整配置顺序:先完成端口等基础配置,再修改连接器的漏洞修复参数。

方式一:通过Tomcat实例直接设置端口

// 1. 创建Tomcat实例并先指定自定义端口
Tomcat _tomcat = new Tomcat();
_tomcat.setPort(9001);

// 2. 获取已初始化的连接器,修改漏洞修复参数
Connector connector = _tomcat.getConnector();
connector.setXpoweredBy(false);
connector.setProperty("server", "");

方式二:手动创建并添加自定义端口连接器

Tomcat _tomcat = new Tomcat();

// 1. 创建自定义端口的连接器
Connector connector = new Connector();
connector.setPort(9001);

// 2. 将连接器添加到Tomcat实例
_tomcat.getService().addConnector(connector);

// 3. 修改漏洞修复参数
connector.setXpoweredBy(false);
connector.setProperty("server", "");

以上两种方式均可保证Tomcat使用指定的9001端口,同时完成Apache Coyote漏洞的修复。

内容的提问来源于stack exchange,提问作者Sachin Naik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:54:22