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 ok
や test 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サイトの不正アクセス防止