web-dev-qa-db-ja.com

Macファイアウォールが外部からnginx(ポート80)をブロックしている

ポートを使用してnginxをインストールし、Sudoで起動しました。ローカルホストからnginxウェルカムページへのアクセスは完全に機能しますが、外部コンピューターからのアクセスは失敗します。

コンピュータで外部からnmapを実行すると、

80/tcp   filtered http

したがって、明らかにMacファイアウォールがポートをブロックしています。次に、nginx実行可能ファイルをファイアウォール例外リストに追加しますが、nmapは引き続きポート80がフィルタリングされていると表示され、Webページにアクセスできません。リストにある正確なバイナリは/ opt/local/sbin/nginxで、私の知る限り正しいようです。

私が何をすべきかアイデアはありますか?ありがとう!

P.S.ファイアウォールをオフにすると、外部からWebサイトにアクセスできますが、それは理想的なソリューションではありません。

10
Alex Ionescu

これは私のために働いた(OSX 10.9):

Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/Cellar/nginx/1.4.4/bin/nginx
Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/Cellar/nginx/1.4.4/bin/nginx

(nginxがアップグレードされたときにこのプロセスをやり直さないようにするために)シンボリックリンクを介して実行しようとすると、次のエラーが発生しました:アプリケーションはファイアウォールの一部ではありません実行後:

Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx
10
Eugene

何年もの間これを理解しようとしていて、最終的にはターミナルで次のことをしました:

$ Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove /usr/local/Cellar/nginx/1.10.0/bin/nginx
Application at path ( /usr/local/Cellar/nginx/1.10.0/bin/nginx ) removed from firewall

$ Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/Cellar/nginx/1.10.0/bin/nginx
The application is already a part of the firewall

$ Sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/Cellar/nginx/1.10.0/bin/nginx
Incoming connection to the application is permitted

そして、それは問題を解決したようでした。

また、nginxアプリケーションをOSXファイアウォールの承認済みアプリケーションリストにドラッグしました。

3
John Griffiths

私はElCapitan(10.11.6)を使用しています。 GUIを使用して、ファイアウォールからnginxを手動で除外できます。これは私のためにそれを解決しました。

まず、システム環境設定に移動します。次に、[セキュリティとプライバシー]に移動し、[ファイアウォール]タブをクリックします。

[ファイアウォールオプション]ボタンをクリックし、ここで除外アプリケーションとしてnginxを追加します。

enter image description here

Nginxは私にとって/usr/local/Cellar/nginx/1.10.3/bin/nginxにありました。システム環境設定のファイルエクスプローラーでこれに移動できなかったので、それを回避するために、デスクトップでnginxへのショートカットを作成し、それを選択しました。

0
dspacejs

私はこれと同じ問題に遭遇しました。 Appleのappfirewall実装を混乱させるnginxのマスター/ワーカープロセスモデルに関係しているのではないかと思います。

私が見つけた解決策は、appfirewallにnginxプロセスを許可するように指示することです。

$ Sudo /usr/libexec/ApplicationFirewall/socketfilterfw -t nginx

これが再起動後も続くかどうかは覚えていません。そうでない場合は、必要に応じて、/ Library/LaunchAgentsに起動plistを作成して起動時にこれを実行します。

0
dossy

$ PATHを変更します

最初に/usr/local/Cellar/nginx/nginx-xx/bin/nginxnginxを見つけましょう

0
march1993