Nginx は、インターネット上のいくつかの最大規模のサイトの負荷を処理するオープンソースの高性能 HTTP およびリバース プロキシ サーバーです。 NGINX Web サーバーを管理するときに実行する最も一般的なタスクの 1 つは、ログ ファイルのチェックです。
ログの構成方法と読み取り方法を知ることは、詳細なデバッグ情報を提供するため、サーバーまたはアプリケーションの問題のトラブルシューティングを行うときに非常に役立ちます。
Nginx は、アクセス ログとエラー ログという 2 種類のログを使用してイベントを記録します。アクセス ログにはクライアント要求に関する情報が記録され、エラー ログにはサーバーとアプリケーションの問題に関する情報が記録されます。
Nginx は、顧客のリクエストが処理されるたびに、アクセス ログに新しいレコードを生成します。各イベント レコードにはタイムスタンプが含まれており、クライアントと要求されたリソースに関するさまざまな情報が含まれています。アクセスログには、訪問者の位置、訪問者が訪問したページなどが表示されます。
log_format
ディレクティブを使用すると、ログの形式を定義できます。access_log
ディレクティブは、ログ ファイルの場所と形式を有効にして設定します。
access_log
コマンドの最も基本的な構文は次のとおりです。
access_log log_file log_format;
ここで、log_file
はログ ファイルのフル パスです。log_format
は、ログ ファイルに使用される形式です。アクセス ログは、http
、server
またはlocation
ディレクティブのコンテキストで有効にすることができます。
デフォルトでは、Nginx メイン設定ファイルのhttp
ディレクティブは、グローバル アクセス ログ形式を設定します。
http { ... access_log /var/log/nginx/access.log; ... }
/etc/nginx/nginx.conf
メンテナンス性を高めるため、サーバーごとに個別のアクセス ログ ファイルを設定することをお勧めします。server
ディレクティブに設定されたaccess_log
ディレクティブは、http
ディレクティブに設定されたaccess_log
を上書きします。
http { ... access_log /var/log/nginx/access.log; ... server { server_name domain.com access_log /var/log/nginx/domain.access.log; ... } }
/etc/nginx/conf.d/domain.com.conf
ログ形式が指定されていない場合、Nginx は次のように事前定義された組み合わせ形式を使用します:
log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
ログ形式を変更するには、デフォルト設定をオーバーライドするか、新しい設定を定義します。たとえば、 # Add でXX-Forwarded-For
ヘッダーの値を追加することでcombined
形式を拡張するmain
という名前の新しいログ形式を定義します。次の定義ディレクティブを ##httpまたは
serverに追加します:
log_format custom '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log custom;
access_logディレクティブの値を
offに設定します。理論的には、このような状況は発生せず、Nginx は以前のログ ファイルを自動的に削除します。
access_log off;
error_logディレクティブは、エラー ログの場所と重大度レベルを有効にして設定します。次の形式をとり、
http、
serverまたは
locationコンテキストで設定できます:
error_log log_file log_level
log_levelパラメータ ログレベルを設定します。以下に、重大度の低いものから高いものまで、レベルを示します。
debug info notice warn error crit alert emerg
warnに設定すると、Nginx は
error、
crit、
alertおよび
emerg もログに記録します。 ### 情報。log_level
パラメータが指定されていない場合、デフォルトはerror
です。デフォルトでは、error_log
ディレクティブは、メイン nginx.conf ファイル内のhttp
ディレクティブのコンテキストで定義されます:
/etc/nginx/nginx.confアクセス ログ付き 同様に、サーバーごとに個別のエラー ログ ファイルを設定することをお勧めします。これにより、http ディレクティブ コンテキストなどの上位レベルの設定がオーバーライドされます。たとえば、domain.com のエラー ログをhttp { ... error_log /var/log/nginx/error.log; ... }
に設定するには、次のようにします:
構成ファイルを変更するたびに、変更を適用するには Nginx サービスをリロードする必要があります効果。http { ... error_log /var/log/nginx/error.log; ... server { server_name domain.com error_log /var/log/nginx/domain.error.log warn; ... } }
ログ ファイルの場所
ディレクトリにあります。Nginx ログ ファイルを読んで理解する
、less
、grep
、cut # を使用できます##、
awkおよびその他のコマンドは、nginx ログ ファイルを開いて解析します。以下は、デフォルトの Nginx ログ形式を使用したアクセス ログ ファイルの記録です:
192.168.33.1 - - [15/Oct/2019:19:41:46 +0000] "GET / HTTP/1" 200 396 "-" "Mozilla/0 (X11; Linux x86_64) AppleWebKit/536 (KHTML, like Gecko) Chrome/38120 Safari/536"
让我们细分Nginx日志文件记录的每个字段意味着什么:
$remote_addr
–192.168.33.1
-发出请求的客户端的IP地址。
$remote_user
–-
-HTTP身份验证用户。未设置用户名时,此字段显示-
。
[$time_local]
–[15/Oct/2019:19:41:46 +0000]
本地服务器时间。
"$request"
–"GET / HTTP/1.1"
-请求类型,路径和协议。
$status
–200
-服务器响应代码。
$body_bytes_sent
–396
-服务器响应的大小(以字节为单位)。
"$http_referer"
–"-"
-引荐网址。
"$http_user_agent"
–Mozilla/5.0 ...
-客户端的用户代理(网络浏览器)。
使用tail
命令实时观看日志文件记录:tail -f access.log
以上がNginx のアクセス ログとエラー ログを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。