最近想分析 Nginx 的 Log,最後自己寫了一個 regex,記錄一下。在 IP 部分省麻煩沒有做任何驗證,IPv4 或 IPv6 皆可。
1 | (?P<ip>[^\s]+)\s-\s(?P<remote_user>[^\s])\s\[(?P<time_local>[^]]*)\]\s\"(?P<request>(?P<method>[A-Z]{3,7})\s(?<uri>.*)\s(?<http_version>HTTP\/[^"]+))\"\s(?P<status>\d{3})\s(?P<body_bytes_sent>\d+)\s\"(?P<referer>[^\"]*)\"\s\"(?P<http_user_agent>[^\"]+)\"\s\"(?P<http_x_forwarded_for>[^\"]+)\" |
這個正規表達式對應的是預設的 Nginx main
log 格式:
1 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |