1. 概述
默认情况下,Apache Tomcat 运行在 8080 端口。实际开发中常遇到两种情况:
- 该端口已被其他进程占用
- 项目要求必须使用特定端口(如 80)
本文将演示如何修改 Tomcat 的 HTTP 端口(以修改为 80 端口为例),该方法适用于任意端口号修改。
2. 修改 Tomcat 配置
核心步骤是修改 Tomcat 的主配置文件:
- 找到服务器上的
/conf/server.xml 文件 - 定位 HTTP 连接器配置行:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
- 将
port
属性值修改为 80:<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443"/>
⚠️ 注意:修改后需重启 Tomcat 才能生效
3. Linux/Unix 系统特殊处理
在 Linux/Unix 系统中,**1024 以下的端口属于特权端口**,仅允许 root 用户进程绑定。如果使用 1024 及以上端口,可直接跳过本节,前往第 4 节重启服务器。
3.1. 特权端口绑定方案
根据权限情况选择处理方式:
✅ 有 root/sudo 权限
直接以 root 权限启动 Tomcat:
$ sudo startup.sh
❌ 无 root/sudo 权限
直接启动会报错:
java.net.BindException: Permission denied (Bind failed) <null>:80
此时需通过 authbind
工具解决,具体步骤见下文。
3.2. 安装 authbind 工具
Debian/Ubuntu 系统
$ sudo apt-get install authbind
macOS 系统
- 从 GitHub 下载源码
- 编译安装:
$ cd MacOSX-authbind $ make $ sudo make install
3.3. 配置端口权限
以 Tomcat 9.x 为例,执行以下命令:
$ sudo touch /etc/authbind/byport/80
$ sudo chmod 500 /etc/authbind/byport/80
$ sudo chown tomcat_user /etc/authbind/byport/80
⚠️ 注意:将 tomcat_user
替换为实际运行 Tomcat 的用户名
3.4. 启用 Tomcat 的 authbind
修改
- 找到这行:
exec "$PRGDIR"/"$EXECUTABLE" start "$@"
- 替换为:
exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
3.5. 旧版 authbind 兼容处理
若使用 authbind < 2.0.0(不支持 IPv6):
- 创建
/bin/setenv.sh 文件 - 添加以下配置强制使用 IPv4:
export CATALINA_OPTS="$CATALINA_OPTS -Djava.net.preferIPv4Stack=true"
4. 重启服务器
完成所有配置修改后,重启 Tomcat 服务器即可通过 80 端口访问。
5. 总结
本文完整演示了将 Tomcat 默认端口从 8080 修改为 80 的全过程,关键点包括:
- 修改
server.xml
的 Connector 配置 - Linux 系统下特权端口的特殊处理
- authbind 工具的安装与配置
该方法同样适用于 Tomcat 6.x、7.x 和 8.x 版本。踩坑提醒:生产环境修改端口前务必确认端口未被占用,并测试所有相关接口。