由于 Mac 系统限制非root用户不能启动1024以下端口,而我们平时使用Mac一般都是非root用户,所以如果想启动80端口必须用root用户。
比如启动nginx,必须使用sudo nginx ,但是如果用root权限启动nginx或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法删除。
为此, 我们可以通过pfctl做网络层的端口转发, 让连接到本机80端口的请求, 都转发到9090端口
解决方法:
sudo vim /etc/pf.conf
pf.conf是对顺序强要求的, 所以注意添加的内容放的顺序
在 rdr-anchor "com.apple/*" 这一行的后面添加一行
rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 9090
其中lo0是绑定了127.0.0.1的网络设备名称,具体可以使用ifconfig查看
在tomcat的配置中,设定启动端口为9090
让端口转发马上生效
sudo pfctl -d
sudo pfctl -f /etc/pf.conf
sudo pfctl -e
ps: 启用之前请先停掉其他占用80端口的进程,比如nginx
Mac下开启与关闭端口转发的脚本配置方法
|
|