デバッグ方法がわからないという複雑な問題があります。私のprodサーバーでは、ページ速度でソースからコンパイルされたnginxがあります。そして、すべてが正常に機能しますが、パターンを識別できない場合があり、エラーログにエラーが発生することなくnginxが機能を停止します。
error_log /usr/local/nginx/localhost-error.log;
HTOPを実行すると、nginxに関連するpidが見つからないため、この問題が発生するたびに手動でnginxを起動する必要があります。
Nohup /usr/local/nginx/sbin/nginx &
それ以外の場合、nginxは正常に機能します。重要かどうかはわかりませんが、基本認証に対してブルートフォース攻撃を受けることがありますが、3回間違って試行した後、失敗を使用します。
この問題の理由をどのように見つけることができますか?
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
nginx version: nginx/1.10.1
これ以上の情報がなければ、問題が何であるかを正確に言うことは困難です。ただあなたの方法でいくつかの考えを投げるつもりです。より多くの情報であなたの投稿を編集してください、そして多分私達はそれを理解することができます。
/var/log/syslog
に関連するものはありますか?stdout
/stderr
をnginxから保存します。このようなもの。多分それが再び起こるときあなたは何か面白いものを捕まえるでしょう。 Nohup /usr/local/nginx/sbin/nginx >> /var/log/nginx.out 2>&1 &
Nginxが死ぬのを見るたびにログに記録するスクリプトを実行します。次に、これを使用して、システム上の他のイベントと相関させることができます。
while true; do NUM_INSTANCES=$(ps -A | grep nginx | wc -l) if [[ "$NUM_INSTANCES" == 0 ]]; then echo "$(date) nginx just died" >> /var/log/syslog fi sleep 1 done
echo
をロガー呼び出しに置き換えることもできます。同様のスクリプトを使用してシステムをデバッグしました。シェルではなくスクリプトファイルでこれを実行してください。そうすれば、killall <scriptname>.sh
を実行して強制終了できます。
また、nginxデバッグページの情報の一部が役立つ場合があります。 https://www.nginx.com/resources/wiki/start/topics/tutorials/debugging/