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

サーバー設定

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

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



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

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

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

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

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

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

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

$ 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 を必ず実行するように心がけましょう。

【関連記事】
nginx に繋がらない場合の調査方法
nginx で User-Agent 制限を掛ける
Webサイトの不正アクセス防止
nginx インストール手順 (CentOS)
nginx インストール手順 (Ubuntu)