Nginx 教程

Nginx 教程 Nginx 简介 Nginx 源码架构分析 Nginx 编译安装 Nginx(Tengine) 编译安装 Nginx(OpenResty) 编译安装 Nginx 配置简述 Nginx Docker 容器化配置

Nginx 核心配置指令

Nginx 核心配置指令 Nginx 配置文件 Nginx 进程配置指令 Nginx 端口监听:listen Nginx 主机名server_name Nginx 处理HTTP请求 Nginx 路由匹配规则:localhost Nginx 重定向配置:rewrite Nginx 根目录配置:root Nginx 访问路径别名:alias Nginx 文件判断:try_files Nginx 零复制:sendfile Nginx 日志记录配置

Nginx HTTP模块

Nginx 镜像模块 Nginx 请求头控制模块 Nginx IP访问控制模块 Nginx 用户cookie模块 Nginx 并发连接数限制模块 Nginx 首页处理模块 Nginx 请求频率限制模块 Nginx 页面缓存时间配置 Nginx gzip压缩及相关配置

Nginx Web服务

Nginx 静态资源服务器搭建 Nginx 文件下载服务器搭建 Nginx 伪动态SSI服务器 Nginx HTTPS服务器搭建 Nginx FastCGI模块配置简述 Nginx PHP服务器环境搭建 Nginx 基于FastCGI负载均衡 Nginx CGI网关接口 Nginx uWSGI模块配置 Nginx Python项目部署 Nginx 伪流媒体服务器搭建 Nginx HTTP2模块配置简述 Nginx WebDAV模块配置简述

Nginx 代理服务器

Nginx HTTP代理服务器 Nginx stream模块简述 Nginx TCP/UDP代理简述 Nginx 基于SSL的TCP代理服务器 Nginx gRPC代理服务器

Nginx 缓存

Nginx Web缓存配置 Nginx 代理缓存配置 Nginx Memcached 缓存模块 Nginx 反向代理缓存服务器配置 Nginx 客户端缓存控制

Nginx 负载均衡

Nginx 负载均衡模块 Nginx 负载均衡策略 Nginx 长连接负载均衡 Nginx upstream容错机制 Nginx upstream动态更新 Nginx TCP/UDP负载均衡

Nginx 日志管理监控

Nginx 日志分析简述 Nginx 访问日志配置 Nginx 错误日志配置 Nginx 日志归档配置 Nginx 日志分析工具 ELK Nginx 监控工具 Prometheus

Nginx 集群

LVS(Linux虚拟服务器)简介 Keepalived 配置简述 Nginx 集群负载搭建 Nginx 集群配置管理规划 Nginx 配置归档工具GitLab Nginx 配置修改工具Ansible Jenkins 安装与配置简述 Nginx 集群配置管理实例

Nginx 在 k8s 的应用

Kubernetes(k8s)系统简述 Kubernetes(k8s)集群部署 Kubernetes(k8s)网络通信 Nginx Ingress 简介 Nginx Ingress 安装部署 Nginx Ingress 配置映射 Nginx Ingress 注解


Nginx 日志分析简述

Nginx 通常被置于服务器访问的入口,其访问日志可以全局记录用户访问的来源、响应时间,以及用户行为热点等数据,通过对访问日志的分析,可以清晰地了解用户来源、用户行为习惯及自身服务器性能等情况。借助 ELK 的高性能处理能力,可以实时地将数据分析结果展现给服务器的维护人员及应用的开发人员,进而不断提高业务的可用性及产品的用户体验。

Nginx 的日志分析可以分为安全分析、性能分析、可用性分析及访问统计分析 4 个方面。

1) 安全分析

通常黑客对互联网应用的入侵都是先从 Web 服务器漏洞扫描开始的,最常用的扫描方式就是在 URL 中加入特定的脚本、命令或字符串不断尝试访问,并根据返回结果判断被扫描网站是否存在漏洞或后门。如 SQL 注入攻击会在访问的 URL 中带有 select、and、or、order by 等常见的 SQL 语句,XSS 攻击会在访问的 URL 中带有 javascript、vbscript、onmouseover、eval 等 Javascript 或 VBscript 脚本命令。

另外,对管理后台入口的扫描也是常用的手段之一,多数情况下管理后台的安全加固是最容易被忽视的,往往认为不提供访问链接就高枕无忧了,而 admin、manage 等关键词通常会轻而易举地被穷举出来。

这些不安全的访问痕迹都会被 Nginx 服务器记录到访问日志中,并通过 ELK 对 Nginx 访问日志中的 request_uri 字段进行关键字过滤和展示,以求在第一时间了解这些不安全事件并提前做好防范工作。

2) 性能分析

一个网站性能的最直接体现就是请求的响应时间。通常用户的请求响应时间都是以毫秒为单位计算的,若用户的请求响应时间以秒为单位时,将极大地加大用户的等待时间,进而影响用户体验。为方便对请求响应的分析,可以将下表所示的 Nginx 服务器提供的变量添加到访问日志中,以记录请求链中消耗的时间。

变量 变量名 变量说明
$request_time 完全请求时间 从 Nginx 在客户端获取请求的第一个字节到 Nginx 发送给客户端响应数据的最后一个字节间的时间
$upstream_connect_time 代理建立连接时间 与后端代理服务器建立连接消耗的时间
$upstream_header_time 代理请求时间 从与后端代理服务器建立连接到接收到响应数据第一个字节间的时间
$upstream_response_time 响应时间 从与后端代理服务器建立连接到接收到响应数据最后一个字节间的时间

对请求响应时间的分析,可以通过 ELK 对访问日志 $request_time 字段的时间做排名,对时间值比较大的 URL 从 SQL、代码、架构等多方面分析原因。

3) 可用性分析

HTTP 请求的每条访问都会有相应的访问状态码,访问状态码标识了请求成功或失败的状态。通过 ELK 对访问日志按照状态码维度统计总访问量,可以很直观地展示当前网站的可用性比率。

4) 访问统计分析

访问统计分析,可以让网站管理者最直观地了解网站被访问及用户的访问情况,常见的是 PV 及 UV 统计。

PV(Page View)即页面浏览量或点击量,可以让网站管理者清晰地了解当前网站的访问量;UV(Unique Visitor)即独立访客量,以每个同一 IP(remote_addr)、同一客户端类型(http_user_agent)可被识别为独立访客作为统计单位。

PV 体现了用户的访问量,UV 体现了访问当前网站的人数。URL 的访问数量统计,可以清晰地展示网站的哪些功能被大量使用,可以让网站管理者知道用户对网站功能的喜好,以便进行相关的产品优化。