V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
paicha
V2EX  ›  问与答

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

  •  
  •   paicha · 2015-09-08 22:18:28 +08:00 · 3788 次点击
    这是一个创建于 3154 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统版本: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

    有人遇到过这个问题吗?

    16 条回复    2016-06-14 08:53:47 +08:00
    adrianzhang
        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
    paicha
        2
    paicha  
    OP
       2015-09-08 23:06:30 +08:00
    @adrianzhang

    ipfw: command not found
    paicha
        3
    paicha  
    OP
       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
        4
    adrianzhang  
       2015-09-09 01:09:00 +08:00
    我去, Yosemite 又偷偷摸摸干坏事了。不过,查一下命令行方式管理新 fw ,一般比图形界面好用。
    evlos
        5
    evlos  
       2015-09-09 02:55:59 +08:00
    我记得用高一点的端口就好了, 50000 什么的
    youyoumarco
        6
    youyoumarco  
       2015-09-09 10:31:21 +08:00
    同网段不能访问的话也有可能是无线路由器上面设置了隔离,设置后同网段就不能访问了,楼主可以试下
    paicha
        7
    paicha  
    OP
       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
        8
    paicha  
    OP
       2015-09-09 12:30:19 +08:00
    @adrianzhang
    @evlos
    @youyoumarco

    重启了十多次电脑测试

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

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

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

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

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

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

    其实我最开始的困扰是如何把 nginx 在图形界面添加到防火墙里,后来发现找到 nginx 程序,然后拖进窗口就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3130 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:01 · PVG 22:01 · LAX 07:01 · JFK 10:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.