如何取消 OS X 防火墙对 Nginx 的 block ?

2015-09-08 22:18:28 +08:00
 paicha

系统版本:OS X 10.10.5

使用 Homebrew 安装的 Nginx
路径在 /usr/local/Cellar/nginx/1.8.0/bin/nginx

启动 Nginx
sudo nginx


本地访问以下网址均正常
http://127.0.0.1:8080
http://192.168.1.2:8080

同一网段的手机却无法访问。

/usr/local/Cellar/nginx/1.8.0/bin/nginx 添加到 防火墙
设置为:Allow incoming connections,还是无法访问。

打开系统设置,关闭防火墙,手机成功访问网页,由此确定是防火墙的原因。


搜索相关资料,尝试后无果:
https://www.v2ex.com/t/131749
http://ju.outofmemory.cn/entry/154709
http://apple.stackexchange.com/questions/188160/open-firewall-to-run-nginx
http://superuser.com/questions/519289/mac-firewall-blocking-nginx-port-80-from-external-side

现在只想到两个解决办法:
1. 关闭防火墙(下下策)
2. 用其他方法转发到 Nginx

有人遇到过这个问题吗?

3893 次点击
所在节点    问与答
16 条回复
adrianzhang
2015-09-08 22:26:38 +08:00
sudo ipfw add fwd 127.0.0.1,80 tcp from any to me 80 in
sudo ipfw add fwd 127.0.0.1,443 tcp from any to me 443 in
paicha
2015-09-08 23:06:30 +08:00
@adrianzhang

ipfw: command not found
paicha
2015-09-08 23:14:14 +08:00
@adrianzhang

Yosemite firewall: IPFW is gone, switching to PF

http://www.uedbox.com/mac-tomcat-80/

待会试试
adrianzhang
2015-09-09 01:09:00 +08:00
我去, Yosemite 又偷偷摸摸干坏事了。不过,查一下命令行方式管理新 fw ,一般比图形界面好用。
evlos
2015-09-09 02:55:59 +08:00
我记得用高一点的端口就好了, 50000 什么的
youyoumarco
2015-09-09 10:31:21 +08:00
同网段不能访问的话也有可能是无线路由器上面设置了隔离,设置后同网段就不能访问了,楼主可以试下
paicha
2015-09-09 11:39:42 +08:00
@adrianzhang
@evlos
@youyoumarco

一早来上班,什么也没改突然可以访问了。

重复测试,手动在系统设置添加 Nginx 到防火墙允许列表没效果。执行下面代码之后,就可以访问了。额,昨晚同样操作明明是不行的……
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/Cellar/nginx/1.8.0/bin/nginx
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/Cellar/nginx/1.8.0/bin/nginx
paicha
2015-09-09 12:30:19 +08:00
@adrianzhang
@evlos
@youyoumarco

重启了十多次电脑测试

1.开机,运行 Nginx ,手机无法访问

2.先 unblockapp 再运行 nginx ,正常访问

昨晚执行 unblockapp 不行的原因,应该是我没有重启 Nginx 。
adrianzhang
2015-09-09 14:48:08 +08:00
@paicha 谢谢。这个回复能让人少走很多弯路。
freewarcraft
2015-09-09 15:33:11 +08:00
我也遇到过类似的问题,即使是用 apple 自己的 server app , pf 仍然会把 80 端口封掉。。。
尝试过 2 个 GUI 的 PF 管理工具,然并卵。命令行的没试过,懒。。。

后来发现用 443 没问题,不过浏览器会弹警告,反正我是用来调试网页的,无所谓了。。。

当然关掉 PF 才是最爽的,因为他还会封 ftp ,好像只会保留个 ssh 。。。
paicha
2015-09-15 17:35:28 +08:00
@paicha 如果不行,先把系统设置里防火墙的 nginx remove 掉
springz
2015-10-08 09:38:22 +08:00
我从 5 月份就遇到了这个问题,一直无果 @paicha ,能说一下详细的步骤吗?上面的没太看懂,谢谢。
paicha
2015-10-08 15:11:44 +08:00
@springz 先在你的图形界面的防火墙移除掉 Nginx 。然后再通过命令添加到防火墙里。然后重启 Nginx
springz
2015-10-08 18:57:05 +08:00
@paicha 重启就没用了,难道每次开机再来一次。
paicha
2015-10-08 23:17:27 +08:00
@springz 对……不过我很少关机
mzlogin
2016-06-14 08:53:47 +08:00
感谢~

不过我试了下把 nginx 在图形界面添加到防火墙里,然后重启 nginx ,其实也就好使了,楼主会不会最开始这么操作时忘了重启?😬

其实我最开始的困扰是如何把 nginx 在图形界面添加到防火墙里,后来发现找到 nginx 程序,然后拖进窗口就好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/219235

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX