Nginx报错[warn] the "log_format" directive may be used only on "http" level怎么处理

没有实际操作解决过的请勿回复。
Nginx版本升级后,每次运行Nginx时都会出现错误提示:

nginx: [warn] the "log_format" directive may be used only on "http" level in /usr/bbc/abc/nginx/conf/nginx.conf:273

在网上查得别人的建议,把下面这段:

log_format main '$remote_addr - [$time_local] "$host-$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for

"$request_time"';
access_log /usr/bbc/abc/nginx/logs/www.abcdefg.com.log main;

我放入到server的前面,如下面所示,结果还是不行。

server_name _;
return 500;
}
log_format main '$remote_addr - [$time_local] "$host-$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for
"$request_time"';
aaccess_log /usr/bbc/abc/nginx/logs/www.abcdefg.com.log main;
server
{
listen 80;

网上有人把他移出server 放到了他的尾部,只要有访问不管你设置了多少个虚拟主机,马上全部的日志文件都会有变化,还是有问题。请教哪位有实际操作过的完美解决的指导一下。错误如果不处理会有问题吗。

注释掉最上方这个试试,

img

就字面意义,log_format 这行 directive 只能放在 http 块级别,不能放在 server 块中,也就是说日志格式在整个 nginx 的属于最顶级的全局设置。

比如这是错误的:

http {
  ... ...
  server {
    ... ...
    log_format ...;
  }
}

这样是正确的:

http {
  ... ...
  log_format ...;
  server {
    ... ...
  }
}

没搞过这个!