mac下,1024以下端口访问需要root权限。这使得在使用的时候很不方便。比如访问本地服务的一个网站,总得带上端口号。这样难看又麻烦。
面对问题,总会有解决的方法。在 mac os 10.10 以前,通过 ipfw 可以实现代理。更新版本系统之后 ipfw 就被弃用了。这个时候用 pfctl 来实现。
实现过程
创建文件 nginx.proxy
sudo vi /etc/pf.anchors/nginx.proxy
i
输入以下内容:
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port 8443
保存修改。
创建文件 pf-nginx.conf
sudo vi /etc/pf-nginx.conf
i
输入以下内容:
rdr-anchor "nginx"
load anchor "nginx" from "/etc/pf.anchors/nginx.proxy"
保存修改。
启动
sudo pfctl -ef /etc/pf-nginx.conf
启动成功提示:
zhoulindeMacBook-Pro:etc zhoulin$ sudo pfctl -ef /etc/pf-nginx.conf
Password:
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled
关闭
sudo pfctl -d #关闭
pfctl -F all -f /etc/pf.conf #全部关闭
测试
之前需要使用 http://localhost:8080 才能访问的站点,现在使用 http://localhost 就可以访问了。
参考文章
http://www.cnblogs.com/chenmo-xpw/p/5519593.html