windows下Nginx日志处理脚本

下面是关于“Windows下Nginx日志处理脚本”的详细攻略。

一、背景

Nginx是一款高性能的Web服务器,它能够快速处理大量请求。在开发网站时,我们会使用Nginx来提供网站服务。Nginx会记录访问日志,其中包含了访问者的IP地址、请求的URL、响应状态码等信息。

针对这些Nginx记录的日志信息,我们需要分析日志才能更好地了解网站的访问情况、用户行为等信息。而在Windows系统中,我们可以用python的实现的一个简单的日志处理脚本来实现这一目标。

二、先决条件

为了运行这个处理脚本,我们需要先满足以下要求:
1. 安装Python; 脚本采用Python开发,确保安装有Python环境。
2. 安装Nginx; Nginx需正常运行,才能产生访问日志,我们才需要去分析日志。

三、Nginx日志格式

以下是默认情况下的Nginx日志格式:

$log_format combined '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

其中,日志中的各个字段对应的含义分别是:
- $remote_addr:客户端IP地址
- $remote_user:客户端用户
- $time_local:访问时间和时区
- "request":请求的页面和协议
- $status:请求状态响应
- $body_bytes_sent:发送页面的大小
- "http_referer":引导用户查找页面的来源页面地址
- "http_user_agent":浏览器相关信息
- "http_x_forwarded_for":反向代理相关信息

四、脚本开发

参考脚本内容如下,针对具体需求可以进行二次开发。

import re

# 日志文件路径
log_path = "E:/wwwlogs/access.log"
# 分别统计每个url的访问量和ip出现次数
url_count = {}
ip_count = {}

with open(log_path, "r") as f:
    for line in f:
        # 提取访问URL和客户端IP地址
        pattern = re.compile(r'(.+\?.+ )')
        result = pattern.findall(line)
        url = ''
        if result:
            url = result[0].split()[1]
        ip = line.split()[0]

        # 统计每个URL的访问量
        if url in url_count:
            url_count[url] += 1
        else:
            url_count[url] = 1

        # 统计每个IP出现的次数
        if ip in ip_count:
            ip_count[ip] += 1
        else:
            ip_count[ip] = 1

# 按照访问量倒序排列
sorted_url_count = sorted(url_count.items(), key=lambda k: k[1], reverse=True)
print('\nURL访问量:')
for url, count in sorted_url_count:
    print(url, count)

# 按照IP出现次数倒序排列
sorted_ip_count = sorted(ip_count.items(), key=lambda k: k[1], reverse=True)
print('\nIP出现次数:')
for ip, count in sorted_ip_count:
    print(ip, count)

五、实施过程

  1. 打开安装好的Python,新建一个处理日志的脚本文件,例如filename.py。
  2. 将脚本复制到该文件中。
  3. 设置log_path为Nginx日志文件路径,保存脚本文件。
  4. 打开命令行工具(如cmd),定位到处理日志的脚本文件所在的路径中。
  5. 输入如下命令,运行脚本。执行这个命令后,会在命令行中输出URL的访问量和IP的出现次数统计结果。如果期望将结果输出到文件中,则可以在命令末尾加上“>filename.txt”来实现。
python filename.py

例如,在Windows系统中将处理日志的脚本文件保存为analysis_log.py,Nginx日志文件为access.log,运行下面命令:

python analysis_log.py > result.txt

结果将被输出到result.txt文件中。

六、示例说明

下面是两个使用示例:

示例1

这个项目的一个典型应用场景是,对Nginx服务器的访问进行量化和统计,以更好地了解它所面临的流量状态和类型。例如,我们想要了解最常被访问的页面或文件。为此,我们可以执行以下操作:
1. 执行脚本:python analysis_log.py > result.txt
2. 打开输出文件result.txt,查看URL访问量排名。

例如输出文件中几行结果如下:

/to-kfjfsdk.fj 50
?to=htt%3a%2f%2fwww.ppcfudjkfohsdflkoe.com%2ffkjfsdk 20
/test.htm 15

说明网站中最受欢迎的页面是to-kfjfsdk.fj,该页面访问量为50次。

示例2

在某些情况下,可能想了解网站的访问来源或者攻击地址。这时就需要分析访问日志中的客户端IP地址。例如,运行以下操作完全可以过滤掉所有外部IP流量,只分析目标服务器生成的数据.
1. 通过firewall等工具设置规则:仅允许某些IP地址访问Nginx服务器。
2. 执行脚本:python analysis_log.py > result.txt
3. 打开输出文件result.txt,查看IP出现次数排名。

例如输出文件中几行结果如下:

192.168.1.1 5100
192.168.1.2 3618
192.168.1.3 2036

说明IP地址为192.168.1.1最多,出现次数为5100次。这告诉我们,这个IP可能是站点的某个管理员。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:windows下Nginx日志处理脚本 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 使用Lvs+Nginx集群搭建高并发架构的实现示例

    下面我将介绍如何使用LVS+Nginx集群搭建高并发的架构,并提供两个实现示例。 1. 概述 LVS(Linux Virtual Server)是一款基于Linux内核的负载均衡软件,可以将来自客户端的请求分发到多台后端服务器,实现高可用性和高可伸缩性。Nginx是一款高性能的Web服务器和反向代理服务器,它能够支持海量并发处理能力和高度的扩展性,常用于负载…

    人工智能概览 2023年5月25日
    00
  • Django项目uwsgi+Nginx保姆级部署教程实现

    Django项目的uwsgi+Nginx部署是一种高效而稳定的部署方式。本教程将为您提供一步步的操作说明,以实现Django项目的uwsgi+Nginx保姆级部署。 一、安装uwsgi 使用pip安装uwsgi: pip install uwsgi 使用pip安装uwsgi后,需要在Django项目的根目录下创建uwsgi配置文件,以便启动uwsgi服务。 …

    人工智能概览 2023年5月25日
    00
  • 深入了解Python如何操作MongoDB

    下面是深入了解Python如何操作MongoDB的完整攻略: 1. 安装pymongo 在使用Python操作MongoDB之前,需要安装pymongo这个Python驱动包。在命令行中使用以下命令进行安装: pip install pymongo 2. 连接MongoDB数据库 在使用pymongo驱动包操作MongoDB之前,需要先连接MongoDB数据…

    人工智能概论 2023年5月25日
    00
  • java 百度手写文字识别接口配置代码

    当我们需要在Java项目中使用百度手写文字识别接口进行文字识别时,需要进行如下步骤: 1. 百度账号注册与认证 在使用百度手写文字识别API之前,我们需要拥有百度账号并通过实名认证获取相应的API Key和Secret Key。具体步骤可以参照百度API开发者中心的相关文章进行操作。 2. 引入Java SDK 百度AI开放平台提供了Java SDK,我们可…

    人工智能概论 2023年5月25日
    00
  • pytorch通过自己的数据集训练Unet网络架构

    下面是详细的步骤: 1. 准备数据集 首先要准备自己的数据集,建议按照 PyTorch 的 Dataset 和 DataLoader 的使用方法来组织数据集。可以将训练集和验证集分别存放在不同的文件夹中,其中每个文件夹中都对应一类图像。在实现数据增强的过程中,可以使用 torchvision.transforms 中的 transforms。例如,将图片随机…

    人工智能概论 2023年5月25日
    00
  • python图片验证码识别最新模块muggle_ocr的示例代码

    使用Python图片验证码识别最新模块muggle_ocr能够自动识别图片验证码,提高验证码的自动破解能力。以下是该模块的示例代码及详细攻略。 安装 通过pip安装muggle_ocr模块: pip install muggle_ocr 使用方法 这是一个最简单的示例: from muggle_ocr import OCR import requests #…

    人工智能概论 2023年5月25日
    00
  • 深入探究Django中的Session与Cookie

    深入探究Django中的Session与Cookie 在Web开发中,会话(Session)和Cookie(Cookie)是常用的两种技术,用于存储用户信息和状态。Django自带了Session和Cookie的支持,本文将介绍Django中Session和Cookie的详细使用方式。 Session的使用 开启Session支持 Django默认情况下开启…

    人工智能概论 2023年5月25日
    00
  • LNMP部署及HTTPS服务开启教程

    下面是 LNMP 部署及 HTTPS 服务开启教程的完整攻略。 一、环境准备 操作系统:Ubuntu 18.04 LTS 网络环境:已连接互联网 二、安装Nginx 更新 apt-get 包管理器:sudo apt-get update 安装 Nginx:sudo apt-get install nginx 验证 Nginx 是否安装成功:在浏览器访问服务器…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部