问题
tomcat 默认端口是 8080,但是我的一个程序必须用 80 端口启动,才能根据域名去 cas 校验,在idea 中设置了 tomcat 的启动端口是 80 后,并没有起作用,报了 “80端口占用” 的错误,可是也没查到 80 端口被那个程序占用,后来发现是 80 端口没有打开。
原因
由于 Mac 系统限制非root用户不能启动1024以下端口,而我们平时使用Mac一般都是非root用户,所以如果想启动80端口必须用root用户。
比如在启动 nginx 时,必须用命令
sudo nginx
具体步骤
sudo vim /etc/pf.conf
添加
rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
到 pf.conf文件的rdr-anchor "com.apple/*"
这一行后面。其中 lo0 通过 ifconfig 看自己那个设备绑定的是 127.0.0.1, lo0是这个网络设备的名字。 8080是要转发的端口
sudo pfctl -f /etc/pf.conf
sudo pfctl -e
这时,应用启动8080端口即可以,访问的话就可以通过80端口来访问了!
注意:每次重启过后如果要转发都要执行上面最后两条命令