1. ホーム
  2. Web プログラミング
  3. ヒントとコツ

nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)

2022-01-21 14:12:02

nginx を再起動すると、以下の nginx エラーが表示されます。

nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()

80番ポートのプロセスを取得しても、何も表示されません。80番ポートには何もありません

そして、下記を実行します。

sudo netstat -pan | grep ":80"
tcp        0      0 127.0.0.1:8070          0.0.0.0:*               LISTEN      15056/uwsgi     
tcp        0      0 10.170.35.97:39567      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39564      10.158.58.13:8080       TIME_WAIT   -               
tcp        0      0 10.170.35.97:39584      10.158.58.13:8080       TIME_WAIT   -               

以下は、私の nginx conf ファイルの該当部分です。

upstream uwsgi_frontend {
          server 127.0.0.1:8070;
        }
server {
listen 80;
        server_name 127.0.0.1;
        location = /favicon.ico {
                  log_not_found off;
                }
                location / {
                       include uwsgi_params;
                       uwsgi_buffering off;
                       uwsgi_pass 127.0.0.1:8070;
                 }
        }

この問題を解決するために、あなたはマスターを知る [::]:80  はipv6アドレスです。

このエラーは、80番ポートでリスニングしているnginxの構成で、さらにポート  [::]:80 .

私は、デフォルトのsites-availableファイルに以下のように記述していました。

listen 80;
listen [::]:80 default_server;

を追加することで修正できます。  ipv6only=on  を  [::]:80  このように

listen 80;
listen [::]:80 ipv6only=on default_server;

詳しくは、こちらをご覧ください。

http://forum.linode.com/viewtopic.php?t=8580

http://wiki.nginx.org/HttpCoreModule#listen