web-dev-qa-db-ja.com

Nginxをポート80で動作させることができません。他のポートでは正常に動作します

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にリダイレクトされます)。

4
Ariel Nonamë

OSXを再起動しました。働いた。 Linuxでは違うと思います。

2
Ariel Nonamë

エラーは次のとおりです。

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
2
JakeGould

MacOSのようなUNIXベースのシステムでは、スーパーユーザー権限がないと1024未満のポートでサービスを実行できません。ただし、コンピューターを再起動すると、nginxサービスはスーパーユーザーで自動的に再起動されるため、機能します。

次のコマンドで問題を解決できます。

Sudo brew services restart nginx
0