2

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

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

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

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

有什么帮助吗?

4

1 回答 1

5

我遇到了同样的问题,但没有找到解决方法,但我能够通过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),以便从本地计算机(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

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

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

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

net.inet.ip.forwarding=1

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

于 2012-01-02T14:59:43.233 回答