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
ディレクティブのコンテキストで定義されます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">http {
...
error_log /var/log/nginx/error.log;
...
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
/etc/nginx/nginx.confアクセス ログ付き 同様に、サーバーごとに個別のエラー ログ ファイルを設定することをお勧めします。これにより、http ディレクティブ コンテキストなどの上位レベルの設定がオーバーライドされます。たとえば、domain.com のエラー ログを
に設定するには、次のようにします: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:plain;">http {
...
error_log /var/log/nginx/error.log;
...
server {
server_name domain.com
error_log /var/log/nginx/domain.error.log warn;
...
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
構成ファイルを変更するたびに、変更を適用するには Nginx サービスをリロードする必要があります効果。
ログ ファイルの場所
ディレクトリにあります。 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 サイトの他の関連記事を参照してください。