Write the Code. Change the World.

8月 13

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

http://www.iyunv.com/thread-339881-1-1.html

http://blog.csdn.net/losetowin/article/details/49717119

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注