Mac OS X 10.11(El Capitan)でHomebrewのNginxをセットアップしました。
Ngnixの設定を次のように設定した場合:
listen 127.0.0.1:8080;
listen 127.0.0.1:81;
listen 127.0.0.1:75;
それはうまくいくでしょう。しかし、これをそこに入れると:
listen 127.0.0.1:80;
それはしません。 http://127.0.0.1
に行くと、接続が拒否されます
ps
はNginxが実行されていることを示していますが、netstat -a | grep nginx
またはnetstat -a | grep 80
は実行されていないと述べています。
もちろん、これをルートとして実行します(:8080
で実行するために必要なわけではありません
また、Mac OSXファイアウォールが実行されていません。
エラーログにこれが表示されなくなりました:
2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
何か案は?これを8080
で実行して作業できます(不思議なことに、8080
で実行すると、80
ポートが開き、80
にリダイレクトされます)。
OSXを再起動しました。働いた。 Linuxでは違うと思います。
エラーは次のとおりです。
2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
「アドレスはすでに使用されています」ということはすべてを物語っています。システム上の他の何かがポート80を使用しています。Web共有が有効になっていますか、またはApacheがインストールされて実行されていますか?これを確認する方法は、システムで次のようにlsof
を実行することです。
Sudo lsof -i -P | grep -i "80"
これにより、ポート80を使用している可能性のあるプロセスが厳密に示されます。MacOSXシステムで「リッスン」するように設定されている他のポートを確認したい場合は、次のコマンドを実行します。
Sudo lsof -i -P
MacOSのようなUNIXベースのシステムでは、スーパーユーザー権限がないと1024未満のポートでサービスを実行できません。ただし、コンピューターを再起動すると、nginxサービスはスーパーユーザーで自動的に再起動されるため、機能します。
次のコマンドで問題を解決できます。
Sudo brew services restart nginx