ホームページ  >  に質問  >  本文

Centos 7 nginx は IP をバインドした後にシステムを起動できず、bind() が失敗したと表示されます

テスト用に新しい仮想マシンを特別に作成しました。この仮想マシンには、a.a.a.a と b.b.b.b の 2 つの IP があります。nginx が a.a.a.a:80 のみをリッスンすることを願っています。
ただし、指定されたリスニング IP listen a.a.a.a:80; が構成ファイルに設定されてシステムが再起動されると、nginx は起動に失敗し、エラー Starting nginx: [emerg]: binding を報告します。 () to a.a.a.a failed (99: Cannot assign requested address) となりますが、この時は手動で systemctl start nginx を実行すれば正常に起動できます。
構成ファイル内の IP listen 80; を削除してシステムを再起動すると、nginx が正常に起動できるようになります。
要約:
リスニングIPを指定した後、システムでサービスを自動的に開始することはできませんが、手動でサービスを開始して正常に使用できます。
リスニング IP を指定しない場合、サービスはシステムによって自動的に開始され、正常に動作します。

この状況を解決するにはどうすればよいですか?

一時的な解決策については、この投稿のコメントを参照してください (デフォルトでは展開されていません)
推測される理由は、nginx がバインドする IP を検出する必要があるが、システムが検出時に値を返さないか、検出時間が速すぎるため、システムがバインドを許可しないことです。詳細についてはマスターが追加するまでお待ちください

PHPzPHPz2712日前693

全員に返信(1)返信します

  • 習慣沉默

    習慣沉默2017-05-16 17:27:18

    nginx を起動するユーザーが root ユーザーであるかどうかを確認します。デフォルトでは、ポート 80 は root のみが占有できます。また、一般のユーザーがポート 80 を占有できるように、関連する設定を変更する必要があります。

    返事
    0
  • キャンセル返事