nginx.conf中的log_format被忽略

时间:2017-01-08 01:03:19

标签: nginx

这里的NGINX初学者。

我的日志目前如下:

  

92.21.236.47 - - [08 / Jan / 2017:00:48:10 +0000]“GET / HTTP / 1.1”200 148“ - ”“Mozilla / 5.0(Windows NT 10.0; WOW64; rv:50.0) Gecko / 20100101 Firefox / 50.0“

当我在默认的/etc/nginx/nginx.conf

中添加以下行时
log_format main '$remote_addr - $remote_user xxx[$time_local]xxx '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

access_log /var/log/nginx/access.log; 
error_log /var/log/nginx/error.log;

(access_log和error_log行已存在于默认配置中,我将这些仅用于上下文)。

然后我用:

重启NGINX
systemctl restart nginx

我现在希望我的日志能够更改,特别是显示使用的xxx文字值.. xxx [$ time_local] xxx ..但我的更改没有任何区别。

如果我将 log_format main 更改为 log_format合并,则服务器将不会重新启动。

2 个答案:

答案 0 :(得分:12)

改变..

access_log /var/log/nginx/access.log;

到..

access_log /var/log/nginx/access.log main;

修好了。

其中 main 是在..

中定义的log_format的名称
log_format main '$remote_addr - $remote_user xxx[$time_local]xxx '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';

答案 1 :(得分:2)

现在回复很晚,但对那些仍然陷入困境的人可能有用。

log_format指令写在server {}之外

整个代码就是这样

log_format main '$remote_addr - $remote_user xxx[$time_local]xxx '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent"';
server {
      listen 80;
      access_log /var/log/nginx/<your_domain>_access.log main; 
}

这里main表示在编写日志时nginx应该包括哪些字段。

有关更多详细信息,请查看官方文档 Sampling Requests with NGINX Conditional Logging