Tomcat 在基于 Unix 系统上无法绑定80端口的解决方法

这种情况通常发生在以非root权限用户启动的情况下。

原因:
在基于Unix的系统上,绑定小于1024的端口需要root权限。

解决方法:

1.以root权限启动
我想大概没人愿意在产品化部署时root权限运行JSP,当然如果你是在本地开发测试没有任何问题。

2.做端口转发
这种情况通常时你使用Eclipse等IDE内部的WTP运行时使用,因为你没法指定root权限运行(个人看法,未深入研究),所以做个端口转发,简单快速使用,不用时删掉就OK。
基于BSD系统(比如Mac OS)使用 ipfw:

sudo ipfw add fwd 127.0.0.1,8080 tcp from any to 127.0.0.1 80 in

在不使用得时候,可以删除转发

$sudo ipfw list #查看规则列表
00100  fwd 127.0.0.1,8080 tcp from any to 127.0.0.1 80 in
$sudo ipfw 00100 #删除rule id 为00100的规则。注意:根据你的是情况替换rule id

Linux系统使用 iptables:

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080

3.通过前端服务器反向代理(通常用于产品化部署)
使用Nginx,Apache等Web服务器运行于80端口,然后代理到Tomcat运行端口8080

关于Nginx反向代理的配置,可以参见我之前关于Nginx的文章。
Nginx 反向代理的使用
使用 Nginx + Mercurial(aka hg) 架设版本管理系统
Nginx系列文章