背景:
租了一台阿里云ECS,想搭建一个java Web 程序,环境都搭建好后,将Tomcat端口改为80并执行:
./startup.sh
程序报错端口号冲突。估计是80端口被占用了,但是想绑定域名,还是需要将80端口映射到tomcat才行。于是检查占用80端口的程序:
是一个叫AliYunDun的程序将80端口占用了。
于是各种搜索,大神回答说阿里盾并不是将80端口给占用了,而是为了保护请求,进行一层防护。于是就有了下面的解决方法。
解决方案:
由于80端口受到各种保护措施,所以一般程序是无法获取80端口的使用权的,要想实现不输入端口号直接访问程序,需要将80端口的请求转发到Tomcat设定的端口上去,也就是默认的8080端口。
首先查看服务器网卡及ip设置:
很明显eth1为外网网卡。
设置端口号转发规则:
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
保存规则
[root ~]# cd /etc/rc.d/init.d
[root ~]# ./iptables save
## iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
搞定!