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 process
と worker 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 に原因がある場合は、サーバー側の設定で対応できることが殆どです。
サーバー内のプロセス状況・ポート使用状況に注意して調査しましょう。
⇒ nginx が起動しない場合の対処方法
⇒ EC2 に接続できないときの対処方法
⇒ Web サイトの不正アクセス対策