Page Discussion History


インストール | モジュール | アドオン | 設定 | コミュニティ | その他の情報源



nginx のログ出力を制御します。


log_format gzip '$remote_addr - $remote_user [$time_local]  '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log  /spool/logs/nginx-access.log  gzip  buffer=32k;

エラーに関するログ出力についての情報は、core モジュールの error_log を参照してください。



Syntax: access_log path [ format [ buffer = size [ flush = time ]]]
access_log path format gzip[= [ buffer = size ] [ flush = time ]
access_log off
Default: logs/access.log combined
Context: http
if in location

The access_log directive sets the path, format and buffer size for the access log file. Using "off" as the only parameter clears all access_log directives for the current level. If the format is not indicated, it defaults to "combined". The size of buffer must not exceed the size of the atomic record for writing into the disk file. This size is not limited for FreeBSD 3.0-6.0.

The log file path can contain variables (version >=0.7.4) but such logs have some limitations:

  • worker user must have permission to create files in;
  • buffering does not work;
  • for each log entry, the file is opened and immediately closed after writing the record. However, descriptors of frequently used files may be stored in open_log_file_cache . Regarding log rotation, it must be kept in mind that over time (which is set by the parameter valid of directive open_log_file_cache), logging can be still continue to the old file.

Nginx supports powerful access log separation per location. Accesses can also be output to more than one log at the same time. For more details, see the Multiple access_log directives in different contexts thread on the mailing list.


Syntax: log_format name string ...
Default: combined "..."
Context: http

The log_format directive describes the format of a log entry. You can use general variables in the format, as well as variables which exist only at the moment of writing into the log:

  • $body_bytes_sent, the number of bytes, transmitted to client minus the response headers. This variable is compatible with the %B parameter of Apache's mod_log_config (this was called $apache_bytes_sent, before version 0.3.10)
  • $bytes_sent, the number of bytes transmitted to client
  • $connection, the number of connection
  • $msec, the current time at the moment of writing the log entry (microsecond accuracy)
  • $pipe, "p" if request was pipelined
  • $request_length, the length of the body of the request
  • $request_time, the time it took nginx to work on the request, in seconds with millisecond precision (just seconds for versions older than 0.5.19)
  • $status, status of answer
  • $time_iso8601, time in ISO 8601 format, e. g. 2011-03-21T18:52:25+03:00 (added in 0.9.6)
  • $time_local, local time into common log format.

The headers, transmitted to client, begin from the prefix "sent_http_", for example, $sent_http_content_range.

Note that variables produced by other modules can also be logged. For example you can log upstream response headers with the prefix "upstream_http_", see upstream .

There is a predefined log format called "combined":

log_format combined '$remote_addr - $remote_user [$time_local]  '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';


Syntax: open_log_file_cache max = N [ inactive = time ] [ min_uses = N ] [ valid = time ]
open_log_file_cache off
Default: off
Context: http



  • max - キャッシュに格納できるディスクリプタの最大数。これを超過した場合は、 LRU アルゴリズムにしたがって消去が行われる
  • inactive - この時間内に利用されなかったファイルディスクリプタは消去される。デフォルトは 10 秒
  • min_uses - キャッシュに格納し続ける上で、inactive パラメータで指定した時間内に最低限必要な利用回数。デフォルトは 1
  • valid - ファイルがオープン時と同じ名前で存在しているかどうかをチェックする周期。デフォルトは 60 秒
  • off - キャッシュを無効にする


open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;


Original Documentation