在 http 区块里,这个 log_format 设置的是一种日志的格式, main 是给这个日志格式起的一个名字。 后面的东西就是这个日志格式。这里面用了一些 $ 符号开头的东西,这些是在 nginx 里面可以使用的一些变量。
下面这个 access_log 指令配置的是一个访问日志文件,nginx 请求全部都记录到这个日志文件里,默认这个文件的位置是 /var/log/nginx 下面的 access.log, 后面的这个 main 就是在上面用 log_format 定义的一个日志格式。
在终端,执行一下 sudo tail 查看一下 /var/log/nginx/access.log 这个日志文件里的最近的几行内容。每一行就是一条访问日志。
在 main 这个日志格式里面,一开始是 $remote_addr 变量, 这个变量对应的值就是客户端的 ip 地址,也就是对服务器发出请求的那个用户的 ip 地址。
$remote_addr 后面是个减号,在日志里会显示用一个减号。 $remote_user 指的是做 Basic 身份验证的时候提供的用户名,在这条访问日志里是用减号表示的这个值,也就是这个访问并没有设置使用 Basic 身份验证。
$time_local 是发生访问的日期时间,这个日期时间变量放在一组方括号里了,所以你在日志里也会发现这个日期时间是在一组方括号里。
$request 变量指的是请求,在这条日志里显示这个请求用的是 HTTP 的 GET 访问,请求的是一个叫 favicon.ico 的文件。
后面这个 404 指的是请求的状态码,对应的就是日志格式里的这个 $status 变量。 $body_bytes_sent 是发给客户端的主体的大小, 在日志里你可以找到对应的值。
$http_referer 指的是客户端求的地址,在这条日志里表示客户端请求的就是这个 http:/47.111.228.140 这个地址。
$http_user_agent 是客户端设备相关数据,从日志里可以看出,发出请求的这个用户用的是 Macintosh 电脑,电脑的操作系统是 MacOS,用的浏览器是 Chrome 。
$http_x_forwarded_for 是请求里的 X-Forwarded-For 这个头部数据,在这个请求里没有设置这个头部数据,所以在日志里会用一个减号表示。