在Mac OS X Leopard上,如何在不被防火墙阻止的情况下设置Web服务器(nginx)?

pep*_*ico 2 macos firewall blocked nginx

我正在努力让我的nginx服务器从外部可以通过OS X(Mac OS X Snow Leopard)防火墙打开.我被卡住了,我不知道该怎么调整更多.

我可以通过127.0.0.1访问我的页面,防火墙打开,另一台计算机防火墙关闭.我无法从外面访问防火墙,我试图在防火墙上为nginx应用程序设置一个例外,它就在那里,"允许来自外部的连接",但它不起作用,我也试图启用网络共享,实际上只是启动一个内部的apache,但它没有帮助nginx服务器.

此外,我可以通过关闭nginx从外部访问这个捆绑的apache!但我无法访问我的自定义Web服务器.

我在一些论坛上看到OS X防火墙的工作原理是允许签名的应用程序,并通过签署应用程序来添加例外......就像这样.问题是将nginx添加为防火墙的例外是行不通的.

有帮助吗?

小智 5

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

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

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

我离开了默认端口(80和443),以便从本地计算机(localhost)进行访问.

之后我通过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
Run Code Online (Sandbox Code Playgroud)

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

sudo sysctl -w net.inet.ip.forwarding=1
Run Code Online (Sandbox Code Playgroud)

要使其永久化,您可以将以下内容添加到/etc/sysctl.conf:

net.inet.ip.forwarding=1
Run Code Online (Sandbox Code Playgroud)

现在,来自外部的所有流量都被转发到nginx正在侦听的新端口,您应该能够从其他计算机访问它.