nginx に繋がらない場合の確認方法・調査方法とコマンド解説

サーバー設定

nginx に繋がらない・Web が表示されない場合の対処方法を解説します。
また、nginx の正常起動を確認するコマンドについても、合わせて紹介します。

まずは nginx から応答が返ってくるかを確認することが重要です。
サーバー内に入れる場合は、プロセスやポートの使用状況も確認しましょう。



nginx の応答をブラウザや curl から確認

基本的な確認方法は「nginx に直接アクセスする」ことです。
ブラウザやコマンドから nginx に接続して応答内容をチェックします。

サーバーがインターネットに公開されている場合は簡単です。
ブラウザにドメイン名や IP アドレスを直接打ち込んで結果を確認します。

 
詳細な情報を確認したい場合は、curl コマンドを利用しましょう。
Linux や Mac のターミナルを使うか、サーバーに直接ログインして実行できます。

例として、https://www.google.co.jp/ の確認を行ってみます。
curl -I オプションを使うと、ヘッダ情報だけを抽出できます。

$ curl -I https://www.google.co.jp/
HTTP/1.1 200 OK
Date: Mon, 22 Oct 2018 12:54:46 GMT
Cache-Control: private, max-age=0
Content-Type: text/html; charset=Shift_JIS
Server: gws
Vary: Accept-Encoding

何らかの応答があれば、nginx そのものは動作しています。
応答がなくタイムアウトする場合は、nginx が落ちている可能性があります。

nginx のプロセス・ポートが起動しているか確認

次に、サーバーへログインして nginx プロセスの存在を確認します。
ps コマンドと grep コマンドを組み合わせると便利です。

$ ps ax | grep nginx
 2195 ?  Ss  0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
22678 ?  S   0:03 nginx: worker process

設定にもよりますが、masater processworker process があれば OK です。
worker process の数は環境によって異なるものの、複数存在していても問題ありません。

 
nginx が利用するポートについても確認しておきます。
サーバーが待受中のポートを ss -natu コマンドで表示し、grep で絞り込みます。

$ ss -natu | grep LISTEN | grep 80
tcp    LISTEN     0      128   :::80   :::*

ss コマンドが利用できない場合は、netstat -nat でも代用可能です。

$ netstat -nat | grep LISTEN | grep 80
tcp    0      0 :::80       :::*        LISTEN

HTTP の場合は「80」番ポート、HTTPS の場合は「443」番ポートがあるかを確認しましょう。

nginx のエラーログ・nginx のバックエンドを確認する

nginx のプロセスやポートに問題がない場合、エラーログを確認しましょう。
初期設定の場合、エラーログは /var/log/nginx/error_log にあります。

下記のエラーが発生している場合、nginx ではなくバックエンドのサービスに問題があります。
PHP の場合は php-fpm、Ruby の場合は Unicorn などを確認しましょう。

upstream timed out

 
PHP など、プログラム側の不具合でエラーとなっている場合もあります。
以下のようなメッセージが出力されていれば、PHP の記述ミスを疑いましょう。

PHP Parse error:  syntax error, unexpected

まとめ

nginx に接続できない場合の対応について解説しました。
まずは切り分けを行うことが大事で、原因が nginx にあるかどうかを見極めましょう。

nginx に原因がある場合は、サーバー側の設定で対応できることが殆どです。
サーバー内のプロセス状況・ポート使用状況に注意して調査しましょう。

【関連記事】
Web サイトの不正アクセス対策
EC2 に接続できないときの対処方法
AWS EC2 インスタンスの特徴と選び方
nginx が起動しない場合の対処方法
Apache, nginx, H2O の特徴を比較
nginx のインストール手順 (CentOS)
nginx のインストール手順 (Ubuntu)