nginx が起動しない・動かない場合の対処方法と確認ポイント

サーバー設定

nginx が起動しない場合の対処方法を紹介します。
どのパターンにおいても、最初にエラーログを確認することが重要です。

主な原因としては、設定ファイルの不備・ポートの競合・ロックファイルの異常が考えられます。



nginx が動かないときはエラーログを確認する

nginx が動いていない・起動しない場合は、まずエラーログを確認しましょう。
殆どの場合、/var/log/nginx/ ディレクトリに格納されています。

エラーログには、エラー以外にも多数の情報が記録されます。
ログの種類を見分けて、対応の必要有無を把握しましょう。

種類 内容 対応
I, INFO 参考情報 対応不要
W, WARN, WARNING 警告 なるべく対応
E, ERR, ERROR エラー 対応必須

エラーが出ている場合は nginx が起動できません。
nginx の起動トラブルでよくある事例について、以下で解説します。

nginx.conf など設定ファイルの不備

nginx の設定ファイルに不備がある場合は起動しません。
nginx -t で設定ファイルを検証できるため、問題がないか確認しましょう。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

syntax is oktest is successful が出ていれば OK です。
不備がある場合は、指摘された行やその前後の内容を見直しましょう。

ポートの競合により nginx が起動しない

nginx 以外のプロセスが80番や443番ポートを使用していると、起動に失敗します。
ss -natup コマンドを root で実行して、ポートを掴んでいるプロセスを調べます。

# ss -natup | grep 443
tcp    LISTEN     0      128   :::443   :::*    users:(("httpd",21135,7))

ss コマンドのない CentOS 6 などでは、 netstat -napt を利用します。

$ netstat -napt | grep LISTEN | grep 80
tcp    0      0 :::80       :::*        LISTEN    7209/httpd

上記の例では、httpd (Apache) のプロセスが「443番」ポートを使用しています。
先に Apache を停止させてから nginx を起動すれば OK です。

nginx のロックファイルが残っていて起動に失敗する

nginx は、起動した直後にロックファイルと呼ばれる空ファイルを作成します。
ロックファイルが存在するときは起動に失敗し、二重起動を防ぐ仕組みとなっています。

nginx が異常終了したときなど、稀にロックファイルが消えずに残る場合があります。
nginx が動いていないのにロックファイルがある場合は削除しましょう。

場所は /var/lock/subsys/nginx であることが多いです。
変更している場合は nginx.conf に定義されているため確認しましょう。

まとめ

nginx が起動しない・動かない場合の対処法を解説しました。
nginx に限らず、まずはエラーログやエラーメッセージを確認することが重要です。

設定ファイルの変更後は、記載ミスをチェックするために nginx -t を必ず実行しましょう。