系统版本: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
有人遇到过这个问题吗?
1
adrianzhang 2015-09-08 22:26:38 +08:00 1
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 |
2
paicha OP |
3
paicha OP @adrianzhang
Yosemite firewall: IPFW is gone, switching to PF http://www.uedbox.com/mac-tomcat-80/ 待会试试 |
4
adrianzhang 2015-09-09 01:09:00 +08:00
我去, Yosemite 又偷偷摸摸干坏事了。不过,查一下命令行方式管理新 fw ,一般比图形界面好用。
|
5
evlos 2015-09-09 02:55:59 +08:00
我记得用高一点的端口就好了, 50000 什么的
|
6
youyoumarco 2015-09-09 10:31:21 +08:00
同网段不能访问的话也有可能是无线路由器上面设置了隔离,设置后同网段就不能访问了,楼主可以试下
|
7
paicha OP @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 |
8
paicha OP @adrianzhang
@evlos @youyoumarco 重启了十多次电脑测试 1.开机,运行 Nginx ,手机无法访问 2.先 unblockapp 再运行 nginx ,正常访问 昨晚执行 unblockapp 不行的原因,应该是我没有重启 Nginx 。 |
9
adrianzhang 2015-09-09 14:48:08 +08:00
@paicha 谢谢。这个回复能让人少走很多弯路。
|
10
freewarcraft 2015-09-09 15:33:11 +08:00
我也遇到过类似的问题,即使是用 apple 自己的 server app , pf 仍然会把 80 端口封掉。。。
尝试过 2 个 GUI 的 PF 管理工具,然并卵。命令行的没试过,懒。。。 后来发现用 443 没问题,不过浏览器会弹警告,反正我是用来调试网页的,无所谓了。。。 当然关掉 PF 才是最爽的,因为他还会封 ftp ,好像只会保留个 ssh 。。。 |
16
mzlogin 2016-06-14 08:53:47 +08:00
感谢~
不过我试了下把 nginx 在图形界面添加到防火墙里,然后重启 nginx ,其实也就好使了,楼主会不会最开始这么操作时忘了重启?😬 其实我最开始的困扰是如何把 nginx 在图形界面添加到防火墙里,后来发现找到 nginx 程序,然后拖进窗口就好了。 |