如何在Nginx中保留一个url的下载数量?

更确切地说,我可以configurationNginx输出日志条目到一个单独的日志文件,每当一个特定的url被请求? 稍后该日志中的行数可以给我下载计数。

nginx.conf

error_log /home/webadmin/applegrew.com/error-n.log; events { worker_connections 1000; } http { include mime.types; index index.html index.htm index.php index.shtml; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; keepalive_timeout 5; gzip on; server { server_name cink.applegrew.com; access_log /var/log/cink.applegrew.com/access.log main; error_log /var/log/cink.applegrew.com/error.log; root /var/www/cink.applegrew.com/html; location = /js/cink\.compiler\.min\.js$ { access_log /var/log/cink.applegrew.com/download-compiler-min.log main; } location = /js/cink\.renderer\.min\.js$ { access_log /var/log/cink.applegrew.com/download-renderer-min.log main; } location = /js/cink\.combined\.min\.js$ { access_log /var/log/cink.applegrew.com/download-combined-min.log main; } location /js/src/ { #This works access_log /var/log/cink.applegrew.com/download-src.log main; } include cacheCommon.conf; } } 

cacheCommon.conf

 location ~* \.(?:ico|css|js|gif|jpe?g|png|txt|xml)$ { # Some basic cache-control for static files to be sent to the browser expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } 

你可以请发布完整的configuration文件?

另一种方法是使用grep -c

 grep -c "/js/cink.renderer.min.js" /path/to/the/main/access_log 

UPDATE

 location = /js/cink\.renderer\.min\.js$ { access_log /var/log/cink.applegrew.com/download-renderer-min.log main; } 
  1. 删除点之前的所有反斜杠。
  2. 在最后删除$或使用~而不是=$表示RegEx中的行尾,所以你必须使用~前缀。

这应该工作

 location ~* /js/cink.renderer.min.js$ { root /var/www/cink.applegrew.com/html; access_log /path/to/separate/log/file; } 

这可能会在你的nginx虚拟主机的网站

 location ~* /path/to/file.ext$ { access_log /var/log/some/seperate.log; } 

/path/to/file.ext相对于您的webroot