UbuntuでNginxが起動しない時の確認項目まとめ

UbuntuでNginxが起動しない時の確認項目まとめ

UbuntuでNginxを起動しようとした際に「failed」「inactive」「emergency」などのエラーが表示されることがあります。原因は設定ファイルの記述ミス、ポート競合、権限問題、SSL設定の不備など様々です。ここではNginxが起動しない場合に確認すべきポイントを順番にまとめます。

Nginxの状態を確認する

まず現在の状態を確認します。

sudo systemctl status nginx

正常な場合。

active (running)

異常な場合。

failed
inactive

エラーメッセージが表示されるため内容を確認します。

設定ファイルの構文チェックを行う

Nginx起動失敗で最も多い原因です。

構文チェック。

sudo nginx -t

正常例。

nginx: configuration file /etc/nginx/nginx.conf test is successful

異常例。

unexpected "}"
unknown directive

エラーが表示された行番号を修正します。

詳細ログを確認する

systemdログを確認します。

sudo journalctl -xeu nginx

または。

sudo journalctl -u nginx -n 50

最近のエラーのみ確認できます。

ログには起動失敗の具体的な原因が記録されています。

Nginxエラーログを確認する

Nginx独自のログも確認します。

sudo tail -100 /var/log/nginx/error.log

リアルタイム監視。

sudo tail -f /var/log/nginx/error.log

SSL証明書エラーや設定ミスが表示されることがあります。

80番・443番ポートの競合を確認する

他のサービスがポートを使用していると起動できません。

確認。

sudo ss -tulpn | grep ':80'

HTTPSも確認。

sudo ss -tulpn | grep ':443'

例。

apache2
docker-proxy

などが表示された場合は競合しています。

停止例。

sudo systemctl stop apache2

その後Nginxを再起動します。

設定ファイルの記述ミスを確認する

特によくあるミス。

・セミコロン忘れ
・波括弧不足
・serverブロック閉じ忘れ
・listen記述ミス
・proxy_pass記述ミス

例。

誤り。

server_name example.com

正しい記述。

server_name example.com;

修正後。

sudo nginx -t

で再確認します。

SSL証明書設定を確認する

HTTPS設定後に起動しなくなるケースがあります。

確認箇所。

ssl_certificate
ssl_certificate_key

証明書存在確認。

ls -l /etc/letsencrypt/live/

証明書が削除されている場合は起動に失敗します。

Let’s Encrypt更新。

sudo certbot renew

sites-enabledの設定を確認する

リンク切れも発生しやすい原因です。

確認。

ls -l /etc/nginx/sites-enabled/

正常例。

default -> /etc/nginx/sites-available/default

リンク切れの場合は再作成します。

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

設定ファイル全体を検索する

読み込まれている設定確認。

sudo nginx -T

全設定が表示されます。

重複設定や不要なserverブロックを確認できます。

特に以下のエラーが多発します。

duplicate listen
duplicate server_name

権限エラーを確認する

Webルートや証明書へのアクセス権限不足で失敗することがあります。

権限確認。

ls -ld /var/www/html

証明書確認。

ls -l /etc/letsencrypt/live/

所有者やパーミッションを見直します。

Dockerとの競合を確認する

Dockerコンテナが80番や443番を占有しているケースがあります。

確認。

docker ps

例。

0.0.0.0:80->80/tcp

表示される場合はDockerがポートを使用中です。

停止。

docker stop コンテナ名

Nginxを再インストールする

設定ファイル破損やパッケージ異常の場合。

削除。

sudo apt remove nginx nginx-common

再インストール。

sudo apt install nginx

起動。

sudo systemctl start nginx

ファイアウォール設定を確認する

起動はしているがアクセスできない場合。

UFW確認。

sudo ufw status

HTTP許可。

sudo ufw allow 80/tcp

HTTPS許可。

sudo ufw allow 443/tcp

起動テストの基本手順

トラブル発生時は以下の順番で確認すると効率的です。

  1. 状態確認
sudo systemctl status nginx
  1. 構文チェック
sudo nginx -t
  1. ログ確認
sudo journalctl -xeu nginx
  1. ポート確認
sudo ss -tulpn
  1. 再起動
sudo systemctl restart nginx

まとめ

UbuntuでNginxが起動しない場合は、設定ファイルの記述ミスとポート競合が特に多い原因です。

確認すべきポイントは以下です。

・systemctl statusで状態確認
・nginx -tで構文チェック
・journalctlでエラーログ確認
・80番と443番の競合確認
・SSL証明書の存在確認
・sites-enabledのリンク確認
・DockerやApacheとの競合確認

まずは「sudo nginx -t」を実行すると、多くの起動トラブルを短時間で特定できます。