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 为啥就不行,有人能探讨一下吗
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/460153
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.