Home >Backend Development >PHP Tutorial >Error log configuration and access log configuration and log records
错误log配置和访问log配置
[root@slave nginx]# vi /etc/nginx/nginx.conf
worker_processes 1;
error_log /var/log/nginx/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format comman '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$request_body" "$request_time"';
server {
listen 80;
server_name www.wolf.com wolf.com;
location / {
root html/www;
index index.html index.htm;
}
access_log /var/log/nginx/www.log comman;
}
server {
listen 80;
server_name bbs.wolf.com;
location / {
root html/bbs;
index index.html index.htm;
}
}
server {
listen 80;
server_name blog.wolf.com;
location / {
root html/blog;
index index.html index.htm;
}
}
##status
server {
listen 80;
server_name status.wolf.com;
location / {
stub_status on;
access_log off;
}
}
}
配置完毕,测试如下
[root@slave nginx]# curl www.wolf.com
http://www.wolf.com
[root@slave nginx]# tail -f www.log
192.168.0.203 - - [11/Jun/2016:16:26:52 +0800] "GET / HTTP/1.1" 200 20 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.14.0.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" "0.000"
通过浏览器访问测试
============================================================
Logs are very beneficial for statistical troubleshooting.
This article summarizes nginx log-related configurations such as access_log, log_format, open_log_file_cache
, log_not_found, log_subrequest, rewrite_log, error_log.
nginx has a very flexible logging mode. Each level of configuration can have its own independent access log.
The log format is defined through the log_format command.
ngx_http_log_module is used to define the request log format.
1. access_log command
Syntax: access_log path [format [buffer=size [flush=time]]];
access_log path format gzip[=level] [buffer=size] [flush=time];
access_log syslog:server= address[,parameter=value] [format];
access_log off;
Default value: access_log logs/access.log combined;
Configuration section: http, server, location, if in location, limit_except
gzip compression level.
buffer sets the memory buffer size.
The maximum time flush is saved in the cache area.
Do not record logs: access_log off;
Use the default combined format to record logs: access_log logs/access.log or access_log logs/access.log combined;
2. log_format command
Syntax: log_format name string…;
Default value: log_format combined "...";
Configuration section: http
name represents the format name, and string represents the equivalent format.
log_format has a default combined log format that does not need to be set, which is equivalent to apache's combined log format, as shown below:
log_format combined '$remote_addr - $remote_user [$time_local]'
' "$http_referer" "$http_user_agent" ';
If nginx is behind a load balancer, squid, or nginx reverse proxy, the web server cannot directly obtain the client's real IP address.
$remote_addr gets the IP address of the reverse proxy. The reverse proxy server can add X-Forwarded-For information in the http header information of the forwarded request, which is used to record the client IP address and the server address requested by the client.
PS: Get the user's real IP. See http://www.ttlsa.com/html/2235.html as follows:
log_format porxy '$http_x_forwarded_for - $remote_user [$time_local]'
body_bytes_sent '
' "$http_referer" "$http_user_agent" ';
The log format allows variable annotations as follows:
$remote_addr, $http_x_forwarded_for records the client IP address
$remote_user records the client user name
$request records the requested URL And HTTP protocol
$status records request status
$body_bytes_sent The number of bytes sent to the client, excluding the size of the response header; This variable is compatible with the "%B" parameter in the Apache module mod_log_config.
$bytes_sent The total number of bytes sent to the client.
$connection The serial number of the connection.
$connection_requests The current number of requests received through a connection.
$msec log writing time. The unit is seconds and the precision is milliseconds.
$pipe If the request is sent through HTTP pipeline (pipelined), the pipe value is "p", otherwise it is ".".
$http_referer records which page link is accessed from
$http_user_agent records client browser related information
$request_length The length of the request (including request line, request header and request body).
$request_time Request processing time, unit is seconds, precision is milliseconds; starting from the first byte read into the client until the last character is sent to the client and the log is written.
$time_iso8601 Local time in ISO8601 standard format.
$time_local local time in common log format.
[warning]The response header sent to the client has the "sent_http_" prefix. For example $sent_http_content_range. [/warning]
The example is as follows:
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' "$http_user_agent" "$ http_x_forwarded_for" '
' '
'"$status" $body_bytes_sent $request_time $bytes_sent $request_length '
'[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]';
open_log_file_cache max=1000 inactive=60s;
server {
server_name ~^(www.)?(.+)$;
access_log logs/$2-access.log main;
error_log logs/$2-error.log;
location /srcache {
access_log logs/access-srcache.log srcache_log;
Syntax: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
Default value: open_log_file_cache off;
Configuration section: http, server, location
For each log record, The file will be opened first, then written to the log, and then closed. You can use open_log_file_cache to set the log file cache (default is off), the format is as follows:
Parameter comments are as follows:
max: Set the maximum number of file descriptors in the cache. If the cache is full, use the LRU algorithm to close the descriptors.
inactive: Set the survival time, the default is 10s
min_uses: Set the minimum number of times the log file is used during the inactive time period before the log file descriptor is recorded in the cache, the default is 1 time
valid: Set the check frequency, the default 60s
off: Disable cache
The example is as follows:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
4. log_not_found instruction
Syntax: log_not_found on | off;
Default value: log_not_found on;
Configuration section: http , server, location
Whether to record non-existent errors in error_log. The default is yes.
5. log_subrequest command
Syntax: log_subrequest on | off;
Default value: log_subrequest off;
Configuration section: http, server, location
Whether to record the access log of subrequests in access_log. Not logged by default.
6. The rewrite_log command
is provided by the ngx_http_rewrite_module module. Used to record rewrite logs. It is recommended to enable debugging rewrite rules. Nginx rewrite rule guide
Syntax: rewrite_log on | off;
Default value: rewrite_log off;
Configuration section: http, server, location, if
When enabled, notice-level rewrite logs will be recorded in the error log.
7. error_log command
Syntax: error_log file | stderr | syslog:server=address[,parameter=value] [debug | info | notice | warn | error | crit | alert | emerg];
Default value: error_log logs/error .log error;
Configuration section: main, http, server, location
Configuration error log.
This article summarizes nginx log-related configurations such as access_log, log_format, open_log_file_cache
, log_not_found, log_subrequest, rewrite_log, error_log.
nginx has a very flexible logging mode. Each level of configuration can have its own independent access log.
The log format is defined through the log_format command.
ngx_http_log_module is used to define the request log format.
1. access_log command
Syntax: access_log path [format [buffer=size [flush=time]]];
access_log path format gzip[=level] [buffer=size] [flush=time];
access_log syslog:server= address[,parameter=value] [format];
access_log off;
Default value: access_log logs/access.log combined;
Configuration section: http, server, location, if in location, limit_except
gzip compression level.
buffer sets the memory buffer size.
The maximum time flush is saved in the cache area.
Do not record logs: access_log off;
Use the default combined format to record logs: access_log logs/access.log or access_log logs/access.log combined;
2. log_format command
Syntax: log_format name string…;
Default value: log_format combined "...";
Configuration section: http
name represents the format name, and string represents the equivalent format.
log_format has a default combined log format that does not need to be set, which is equivalent to apache's combined log format, as shown below:
log_format combined '$remote_addr - $remote_user [$time_local]'
"$request" $status $body_bytes_sent'
' "$http_referer" "$http_user_agent" ';
If nginx is behind a load balancer, squid, or nginx reverse proxy, the web server cannot directly obtain the client's real IP address.
$remote_addr gets the IP address of the reverse proxy. The reverse proxy server can add X-Forwarded-For information in the http header information of the forwarded request, which is used to record the client IP address and the server address requested by the client.
PS: Get the user's real IP. See http://www.ttlsa.com/html/2235.html as follows:
log_format porxy '$http_x_forwarded_for - $remote_user [$time_local]'
body_bytes_sent '
' "$http_referer" "$http_user_agent" ';
The variable comments allowed in the log format are as follows:
$remote_addr, $http_x_forwarded_for record the client IP address
$remote_user record the client user name
$request record the requested URL And HTTP protocol
$status records request status
$body_bytes_sent The number of bytes sent to the client, excluding the size of the response header; This variable is compatible with the "%B" parameter in the Apache module mod_log_config.
$bytes_sent The total number of bytes sent to the client.
$connection The serial number of the connection.
$connection_requests The current number of requests received through a connection.
$msec log writing time. The unit is seconds and the precision is milliseconds.
$pipe If the request is sent through HTTP pipeline (pipelined), the pipe value is "p", otherwise it is ".".
$http_referer records which page link is accessed from
$http_user_agent records client browser related information
$request_length The length of the request (including request line, request header and request body).
$request_time Request processing time, unit is seconds, precision is milliseconds; starting from the first byte read into the client until the last character is sent to the client and the log is written.
$time_iso8601 Local time in ISO8601 standard format.
$time_local local time in common log format.
[warning]The response header sent to the client has the "sent_http_" prefix. For example $sent_http_content_range. [/warning]
The example is as follows:
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' "$http_user_agent" "$ http_x_forwarded_for" '
' '
'"$status" $body_bytes_sent $request_time $bytes_sent $request_length '
'[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]';
open_log_file_cache max=1000 inactive=60s;
server {
server_name ~^(www.)?(.+)$;
access_log logs/$2-access.log main;
error_log logs/$2-error.log;
location /srcache {
access_log logs/access-srcache.log srcache_log;
Syntax: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
Default value: open_log_file_cache off;
Configuration section: http, server, location
For each log record, The file will be opened first, then written to the log, and then closed. You can use open_log_file_cache to set the log file cache (default is off), the format is as follows:
Parameter comments are as follows:
max: Set the maximum number of file descriptors in the cache. If the cache is full, use the LRU algorithm to close the descriptors.
inactive: Set the survival time, the default is 10s
min_uses: Set the minimum number of times the log file is used during the inactive time period before the log file descriptor is recorded in the cache, the default is 1 time
valid: Set the check frequency, the default 60s
off: Disable cache
The example is as follows:
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
4. log_not_found instruction
Syntax: log_not_found on | off;
Default value: log_not_found on;
Configuration section: http , server, location
Whether to record non-existent errors in error_log. The default is yes.
5. log_subrequest command
Syntax: log_subrequest on | off;
Default value: log_subrequest off;
Configuration section: http, server, location
Whether to record the access log of subrequests in access_log. Not logged by default.
6. The rewrite_log command
is provided by the ngx_http_rewrite_module module. Used to record rewrite logs. It is recommended to enable debugging rewrite rules. Nginx rewrite rule guide
Syntax: rewrite_log on | off;
Default value: rewrite_log off;
Configuration section: http, server, location, if
When enabled, notice-level rewrite logs will be recorded in the error log.
7. error_log command
Syntax: error_log file | stderr | syslog:server=address[,parameter=value] [debug | info | notice | warn | error | crit | alert | emerg];
Default value: error_log logs/error .log error;
Configuration section: main, http, server, location
Configuration error log.
The above has introduced the error log configuration, access log configuration and log records, including the content. I hope it will be helpful to friends who are interested in PHP tutorials.