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


10

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

外部からコンピューターでnmapを実行すると明らかになります

80/tcp   filtered http

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

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

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


答えはありませんが、次の点を確認してください:/var/log/appfirewall.logをチェックして、有用な情報sudo lsof -i:80があるかどうかを確認し、実行して実際にnginxがリスニングを実行していることを確認します(そして127.0.0.1だけでなく、すべてのIPでリッスンしています。
Gordon Davisson、

ゴードンさん、提案ありがとうございます。接続しようとすると、ファイアウォールのログは次のようになります。Dec 18 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>:my.ip.is.here:55843からポート80への接続を拒否proto = 6そして、これはリスニングテーブルの出力です:nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *:http(LISTEN)nginx 80438 nobody 6u IPv4 0x35ec104ccb86c175 0t0 TCP *:http(LISTEN)すべてが正しいように見えますが、それでもブロックされます:(
アレックスIonescu

ファイアウォールで許可されているものと許可されていないものの2つのnginx実行可能ファイルがある可能性はありますか?それは私が考えることができる唯一のことです...
ゴードン・デイヴィッソン

回答:


10

これは私のために働きました(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がアップグレードされるときにこのプロセスをやり直すことを避けるために)symlinkを介してそれを実行しようとすると、次のエラーが発生しました: アプリケーションは 実行後にファイアウォールの一部ではありません

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx

「アプリケーションはファイアウォールの一部ではありません」という同じメッセージが表示されましたが、私のcasでは大文字と小文字が区別される問題でした... Cellarの代わりにcellarと書きました。キャピタルCを使ったときはうまくいきました!! ありがとう
Ofer Segev 2016年

3

古くからこれを理解しようとしていて、最終的にはターミナルで次のことを行います:

$ 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アプリケーションをOS Xファイアウォールの承認済みアプリケーションリストにドラッグしました。


これらの手順は私にとってはうまくいきnginxましたが、ウェブサイトが実際にロードを開始するためにも再起動する必要がありました。
カバ

0

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

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

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

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


1
これは10.8では機能しません。-tは無効なオプションであると文句を言います。さらに、-add `which nginx`経由で追加した場合は追加されますが、-removeオプションを使用して削除しようとしても認識されません。
ブレンダン

これはMac OS X 10.9.3でも機能しません。アップルは-tオプションを削除しました。
Siu Ching Pong -Asuka Kenji-

0

$ PATHを変更する

システムにnginx/usr/local/Cellar/nginx/nginx-xx/bin/nginx最初に見つけさせる


0

El Capitan(10.11.6)を利用しています。nginxGUIを使用して、ファイアウォールから手動で除外できます。これで解決しました。

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

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

ここに画像の説明を入力してください

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.