1. ホーム
  2. nginx

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

2022-02-21 14:34:20
<パス

nginx 起動エラー

本日、centos7 に nginx をデプロイしました。インストール中はすべて順調でしたが、起動時に以下のようなエラーが表示されました。
nginx: [emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)

nginxのデフォルトの起動ポートは80で、以前たまたまこのサーバで80番ポートでtomcatを起動したことがあります。

iptablesサービスをインストールします。

ファイアウォールを介して外部ポートを開放する必要がある。サーバーにiptablesサービスがない場合、インストールする必要があります。利用可能な場合は、スキップしてください。

yum install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service


ポートの設定

nginxはデフォルトで80番ポートでアクセスされるため、iptablesで80番ポートを設定する。

vi /etc/sysconfig/iptables


開くと、デフォルトの設定情報は以下のようになります(太字の部分が新規追加部分)。
入力受付 [0:0]
:forward accept [0:0] (フォワード・アクセプト
:出力アクセプト[6:696]。
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT
-A INPUT -j REJECT --reject-with-icmp-host-prohibitedを使用する。
-A FORWARD -j REJECT --reject-with-icmp-host-prohibitedを使用する。
コミット

後で他のポートを開く必要がある場合は、このファイルに変更を追加するだけです!

終了したら、編集用ファイルを保存して終了してください。

:wq

systemctl restart iptables.service

lsof -i:80


ファイアウォールを再起動する

kill -9 process number


80番ポートで占有されているプロセスを表示する

/usr/local/nginx/sbin/nginx


killコマンドでプロセスを終了させる

kill -9 process number


nginxを起動します。

このタイミングでnginxを起動すると、すべてうまくいきます!

/usr/local/nginx/sbin/nginx