nginx2goaccess.sh脚本内容
脚本github地址:https://github.com/stockrt/nginx2goaccess/blob/master/nginx2goaccess.sh
脚本内容:
#!/bin/bash # # Convert from this: # http://nginx.org/en/docs/http/ngx_http_log_module.html # To this: # https://goaccess.io/man # # Conversion table: # $time_local %d:%t %^ # $host %v # $http_host %v # $remote_addr %h # $request_time %T # $request_method %m # $request_uri %U # $server_protocol %H # $request %r # $status %s # $body_bytes_sent %b # $bytes_sent %b # $http_referer %R # $http_user_agent %u # # Samples: # # log_format combined '$remote_addr - $remote_user [$time_local] ' # '"$request" $status $body_bytes_sent ' # '"$http_referer" "$http_user_agent"'; # ./nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"' # # log_format compression '$remote_addr - $remote_user [$time_local] ' # '"$request" $status $bytes_sent ' # '"$http_referer" "$http_user_agent" "$gzip_ratio"'; # ./nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent" "$gzip_ratio"' # # log_format main # '$remote_addr\t$time_local\t$host\t$request\t$http_referer\t$http_x_mobile_group\t' # 'Local:\t$status\t$body_bytes_sent\t$request_time\t' # 'Proxy:\t$upstream_cache_status\t$upstream_status\t$upstream_response_length\t$upstream_response_time\t' # 'Agent:\t$http_user_agent\t' # 'Fwd:\t$http_x_forwarded_for'; # ./nginx2goaccess.sh '$remote_addr\t$time_local\t$host\t$request\t$http_referer\t$http_x_mobile_group\tLocal:\t$status\t$body_bytes_sent\t$request_time\tProxy:\t$upstream_cache_status\t$upstream_status\t$upstream_response_length\t$upstream_response_time\tAgent:\t$http_user_agent\tFwd:\t$http_x_forwarded_for' # # log_format main # '${time_local}\t${remote_addr}\t${host}\t${request_method}\t${request_uri}\t${server_protocol}\t' # '${http_referer}\t${http_x_mobile_group}\t' # 'Local:\t${status}\t*${connection}\t${body_bytes_sent}\t${request_time}\t' # 'Proxy:\t${upstream_status}\t${upstream_cache_status}\t' # '${upstream_response_length}\t${upstream_response_time}\t${uri}${log_args}\t' # 'Agent:\t${http_user_agent}\t' # 'Fwd:\t${http_x_forwarded_for}'; # ./nginx2goaccess.sh '${time_local}\t${remote_addr}\t${host}\t${request_method}\t${request_uri}\t${server_protocol}\t${http_referer}\t${http_x_mobile_group}\tLocal:\t${status}\t*${connection}\t${body_bytes_sent}\t${request_time}\tProxy:\t${upstream_status}\t${upstream_cache_status}\t${upstream_response_length}\t${upstream_response_time}\t${uri}${log_args}\tAgent:\t${http_user_agent}\tFwd:\t${http_x_forwarded_for}' # # Author: Rogério Carvalho Schneider <stockrt@gmail.com> # Params log_format="$1" # Usage if [[ -z "$log_format" ]]; then echo "Usage: $0 '<log_format>'" exit 1 fi # Variables map conversion_table="time_local,%d:%t_%^ host,%v http_host,%v remote_addr,%h request_time,%T request_method,%m request_uri,%U server_protocol,%H request,%r status,%s body_bytes_sent,%b bytes_sent,%b http_referer,%R http_user_agent,%u" # Conversion for item in $conversion_table; do nginx_var=${item%%,*} goaccess_var=${item##*,} goaccess_var=${goaccess_var//_/ } log_format=${log_format//\$\{$nginx_var\}/$goaccess_var} log_format=${log_format//\$$nginx_var/$goaccess_var} done log_format=$(echo "$log_format" | sed 's/${[a-z_]*}/%^/g') log_format=$(echo "$log_format" | sed 's/$[a-z_]*/%^/g') # Config output echo " - Generated goaccess config: time-format %T date-format %d/%b/%Y log_format $log_format " # EOF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫