Implementation of Nginx filtering access logs of static resource files

Implementation of Nginx filtering access logs of static resource files

Messy log

Nginx in daily use is mostly used as both a static resource server and a reverse proxy server. In particular, considering cross-domain issues, the same listening port is used for static resources and backend interfaces. If no filtering is performed, a large number of requests for static resources such as js, css, jpg, etc. will be seen in access_log, which will affect the viewing of backend interface call logs.

I didn't pay much attention to this thing at first, but when I was browsing an article about Nginx optimization, I found a method to use map to define a parameter of whether to write logs. Combined with the recent use of map for dynamic cross-domain configuration, I simply learned and recorded another usage scenario of map.

Use map to filter logs for accessing static resource files

http {
  log_format main '$remote_addr [$time_local] $request $status '
           'uct="$upstream_connect_time" rt="$request_time"';

  map $uri $not_static {
    default 1;
    ~^(.*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$) 0;
  }

  server {
    listen 23456;
    server_name localhost;
    access_log logs/test.log main if=$not_static;
  }
}

Explanation:

  • Customize a log_format, marked as main
  • Match the URI in the request. If the resource ends with gif, jpg, css, js, etc., $not_static is 0, otherwise it is 1
  • For requests to access port 23456, access_log specifies the use of a custom log format identified as main, and logs are recorded only when $not_static is 1. For more information about the if parameter, refer to the official documentation.
  • One thing to note is that when using the if parameter in access_log, you must explicitly specify a log_format, otherwise an error will be reported: nginx: [emerg] unknown log format "if=$not_static"

Another way to write dynamic and static separated logs

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$ {
  #access_log off; #Do not output the log of access to static resources access_log logs/static_resources.log;
}

This is the end of this article about the implementation of Nginx access log filtering of static resource files. For more relevant Nginx access log content, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Use nginx-http-concat module to merge static resource files in nginx
  • How to deploy nginx with Docker and modify the configuration file
  • Detailed explanation of how to find the location of the nginx configuration file
  • Solution to the unknown directive that cannot be opened due to Nginx configuration file problems
  • How to view nginx configuration file path and resource file path

<<:  Vue uses the video tag to implement video playback

>>:  MySQL uses the truncate command to quickly clear all tables in a database

Recommend

Solution to the problem that the InnoDB engine is disabled when MySQL is started

Find the problem Today at work, when copying tabl...

How to use dd command in Linux without destroying the disk

Whether you're trying to salvage data from a ...

How to use shtml include

By applying it, some public areas of the website c...

Tips and precautions for using MySQL index

1. The role of index In general application syste...

Vue implements user login switching

This article example shares the specific code of ...

Proxy_pass method in multiple if in nginx location

1. First, let's review the relevant knowledge...

Use Docker Compose to quickly deploy ELK (tested and effective)

Table of contents 1. Overview 1.1 Definition 1.2 ...

Use PSSH to batch manage Linux servers

pssh is an open source software implemented in Py...

How to add vector icons to web font files in web page production

As we all know, there are two types of images in c...

Ten popular rules for interface design

<br />This is an article I collected a long ...

Install Centos7 using Hyper-v virtual machine

Table of contents introduce Prepare Download syst...

Sample code for easily implementing page layout using flex layout

Without further ado, let's get straight to th...