在Mac OS X Leopard中,如何设置Web服务器(nginx)而不被防火墙阻止?

我正在努力让我的nginx服务器可以在OS X(Mac OS X Snow Leopard)防火墙打开的情况下从外部访问。 我卡住了,我不知道要调整什么。

我可以通过防火墙访问我的页面,通过127.0.0.1和另一台防火墙closures的计算机。 我不能从外面用防火墙访问,我试图把nginx应用程序的防火墙上的例外,它在那里,“允许来自外部的连接”,但它不工作,我也试图启用networking共享,实际上只是启动了一个内部的apache,但是对于nginx服务器并没有帮助。

另外,通过closuresnginx,我可以从外部访问这个捆绑的apache! 但我无法访问我的自定义Web服务器。

我在一些论坛上看到,OS X防火墙的工作原理是允许签名的应用程序,并通过签署应用程序来添加exception…类似的东西。 问题是添加nginx作为防火墙的例外是行不通的。

任何帮助?

    我有同样的问题,发现没有修复,但我能够通过ipfw实施一个解决方法:

    首先你有nginx来听另一个端口。 我添加了10080和10443作为附加端口:

    server { listen 80 default_server; listen 10080 default_server; listen 443 default_server ssl; listen 10443 default_server ssl; ... } 

    我离开到默认端口(80和443)从本地计算机(本地主机)访问。

    之后,我通过ipfw添加了2个转发规则:

     fwd 127.0.0.1,10080 tcp from any to me dst-port 80 fwd 127.0.0.1,10443 tcp from any to me dst-port 443 

    最简单的方法是通过WaterRoof 。 另外,您必须在内核中启用ip-forwarding:

     sudo sysctl -w net.inet.ip.forwarding=1 

    为了使这个永久,你可以添加以下到/etc/sysctl.conf:

     net.inet.ip.forwarding=1 

    现在,所有来自外部的流量都被转发到nginx正在监听的新端口,并且您应该可以从其他机器访问它。