Mac 的 80 端口默认是 root 权限的(小于 1024 的端口都需要 root 权限),普通用户是不能启用 80 端口服务的。假设在 Mac 上启用了一个 8080 端口的 web 服务,想通过转发 80 端口到 8080 端口实现 80 端口访问 web 服务。
根据 [这篇文章]( https://www.jianshu.com/p/1ea969078e4c) ,我选择了 pfctl 来进行 80 端口转发,按照里面的步骤做了之后可以实现在浏览器访问 localhost 或者 127.0.0.1 访问 8080 web 服务,但是却不能通过本机局域网 ip 访问。
文章中特别强调了这一点—— lo0 是本地环路 127.0.0.1,如果希望内网其他同学也能访问到还要加下面的配置:
rdr on en0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
可见这一点并没有生效,我把其中第一个 127.0.0.1 修改成本机局域网 ip 地址也不行,把上面的 80 端口换成大于 1024 的端口也都不行。我的 Mac 使用有线网络,对应 en0 也是没错的。
[这篇文章]( https://www.jianshu.com/p/2e93c3ee6270) 的结论跟我差不多,作者转而选择 nginx 来解决问题——我知道 nginx 能解决,但就是想知道用 pfctl 为啥就不行,有人能探讨一下吗
根据 [这篇文章]( https://www.jianshu.com/p/1ea969078e4c) ,我选择了 pfctl 来进行 80 端口转发,按照里面的步骤做了之后可以实现在浏览器访问 localhost 或者 127.0.0.1 访问 8080 web 服务,但是却不能通过本机局域网 ip 访问。
文章中特别强调了这一点—— lo0 是本地环路 127.0.0.1,如果希望内网其他同学也能访问到还要加下面的配置:
rdr on en0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
可见这一点并没有生效,我把其中第一个 127.0.0.1 修改成本机局域网 ip 地址也不行,把上面的 80 端口换成大于 1024 的端口也都不行。我的 Mac 使用有线网络,对应 en0 也是没错的。
[这篇文章]( https://www.jianshu.com/p/2e93c3ee6270) 的结论跟我差不多,作者转而选择 nginx 来解决问题——我知道 nginx 能解决,但就是想知道用 pfctl 为啥就不行,有人能探讨一下吗