Nginx的日志

一直都是使用默认的Nginx日志,直到发现需要通过日志来检查配置的rule是否正确。

先来个简单的,在server里面配置日志

    # HTTP server                                                                                                                                                                                                    
    server {
        listen       80;
        server_name  localhost;

        if ($uri ~* "/login_page$")
        {
                rewrite ^/(.*)$ https://$host/$1 redirect;
        }

        access_log /opt/kaimei.log;

        location / {
            root   html;
            index  index.html index.htm;
        }
...

现在就可以在/opt/kaimei.log下面看到访问日志。


进一步,如果有多个server配置,可以每个配不同的日志,比如我还有一个HTTPS的 server.

    # HTTPS server                                                                                                                                                                                                   
    server {
        listen       443;
        server_name  localhost;
        ssl                  on;
        ssl_certificate /usr/nginx/conf/server.crt;
        ssl_certificate_key /usr/nginx/conf/server.key;

	access_log /opt/kaimei_https.log;

日志的格式

参考文档http://wiki.nginx.org/HttpLogModule

前面没有在access_log指令后面指定日志格式,因此采用的是默认格式combined. 格式定义如下:

log_format combined '$remote_addr - $remote_user [$time_local]  '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';
一共8个部分。


设置自己的日志格式

在http设置里面,添加如下配置:

    log_format my_log '$remote_addr | $remote_user | [$time_local] | '                                    |
                    '"$request" | $status | $body_bytes_sent |'                                           |    fastcgi_param  SCRIPT_NAME     /kaimei;
                    '"$http_referer" | "$http_user_agent" |';  

然后在所有access_log的指定后面第二个参数使用my_log


关闭某个日志

经常碰到favicon.ico找不到的日志,直接关闭它。

location = /favicon.ico {
  log_not_found off;
}



你可能感兴趣的:(nginx)