日志格式使用指令

指令介绍
Syntax: log_format name [escape=default|json|none] string ...;
Default: log_format combined "...";
Context: http 默认的日志文件
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent ' '"$http_referer"
"$http_user_agent"';

  日志文件路径定义

Syntax: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
Default: access_log logs/access.log combined;
Context: http, server, location, if in location, limit_except
路径可包含变量,不打开日志缓存时,每记录一条日志都需要打开关闭日志文件
if 通过变量值来判断日志是否记录
日志缓存:
功能:批量将内存日志写入文件中
写入磁盘的条件:所有待写入磁盘日志文件大小超出缓存大写;达到flush指定的过期时间;worker进程执行reopen命令,或正在关闭
日志压缩:批量压缩内存中日志,再写入磁盘。buffer默认大小为64kb;压缩级别默认为1(1最快压缩率最低,9最快压缩来较高)

  对日志文件包含的变量名优化

指令

Syntax: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
Default: open_log_file_cache off;
Context: http, server, location max:缓存内的最大文件句柄数;超出后用LRU算法淘汰
inactive:文件访问完在这段时间不会被关闭默认10秒
min_uses:在inactive时间内使用的次数超过min_uses才会继续保存在内存,默认1
valid:超出这个时间后,会检查缓存日志文件是否存在,默认60秒
off:关闭缓存功能

  过滤模块工作位置

默认sub_module未编译进nginx

启用此模块

[root@python nginx-1.15.9]#  ./configure --prefix=/data/web --sbin-path=/usr/bin --user=nginx --group=nginx --with-http_stub_status_module --with-http_auth_request_module --with-http_sub_module --add-module=/root/nginx-http-concat
[root@python nginx-1.15.9]# make
[root@python nginx-1.15.9]# mv /usr/bin/nginx{,.07.12.13.18}
[root@python nginx-1.15.9]# cp objs/nginx /usr/bin/

  更改响应中的字符串

sub模块指令
Syntax: sub_filter string replacement; #把匹配上的返回给用户响应中的字符串替换replacement指定的字符串
Default: —
Context: http, server, location
Syntax: sub_filter_last_modified on | off;# 是否还返回给用户未修改的内容呢;默认不会再返回了
Default: sub_filter_last_modified off;
Context: http, server, location
Syntax: sub_filter_once on | off; # 是否只替换一次,如果关闭会返回所有的响应报文的boyd内容都做替换
Default: sub_filter_once on;
Context: http, server, location
Syntax: sub_filter_types mime-type ...; # 只对什么类型文件的响应做替换
Default: sub_filter_types text/html;
Context: http, server, location

  配置

server {
server_name www.chenxi.com sub.com;
access_log logs/sub.log main;
root html;
index index.html index.htm;
location / {
#sub_filter 'Nginx.oRg' '$host/nginx';
#sub_filter 'nginX.cOm' '$host/nginx';
#sub_filter_once on;
#sub_filter_once off;
#sub_filter_last_modified off;
#sub_filter_last_modified on;
}
}

  在浏览器测试

修改配置打开替换的内容

[root@python vhast]# cat sub.conf
server {
server_name www.chenxi.com sub.com;
access_log logs/sub.log main;
root html;
index index.html index.htm;
location / {
sub_filter 'Nginx.oRg' '$host/nginx';
sub_filter 'nginX.cOm' '$host/nginx';
#sub_filter_once on;
#sub_filter_once off;
sub_filter_last_modified off;#只替换一次
#sub_filter_last_modified on;
}
}

  测试

修改配置

server {
server_name www.chenxi.com sub.com;
access_log logs/sub.log main;
root html;
index index.html index.htm;
location / {
sub_filter 'Nginx.oRg' '$host/nginx';
sub_filter 'nginX.cOm' '$host/nginx';
#sub_filter_once on;
sub_filter_once off;
#sub_filter_last_modified off;
sub_filter_last_modified on;
}
}

  测试

nginx日志模块与HTTP过滤模块与sub模块修改返回内容的更多相关文章

  1. Logstash收集nginx日志之使用grok过滤插件解析日志

    grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [ ...

  2. ELK整合Filebeat监控nginx日志

    ELK 日志分析 1. 为什么用到 ELK 一般我们需要进行日志分析场景:直接在日志文件中 grep. awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如 ...

  3. 烂泥:切割nginx日志

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 这几天自己看了下博客的nginx日志,发现日志文件发现越来越大. 因为nginx自己不会 ...

  4. 【Nginx】开发一个HTTP过滤模块

    与HTTP处理模块不同.HTTP过滤模块的工作是对发送给用户的HTTP响应做一些加工. server返回的一个响应能够被随意多个HTTP过滤模块以流水线的方式依次处理.HTTP响应分为头部和包体,ng ...

  5. nginx日志模块、事件模块

    日志模块 1.access_log指令 语法: access_log path [format [buffer=size [flush=time]]]; access_log logs/access. ...

  6. NGINX 加载动态模块(NGINX 1.9.11开始增加加载动态模块支持)

    NGINX 1.9.11开始增加加载动态模块支持,从此不再需要替换nginx文件即可增加第三方扩展.目前官方只有几个模块支持动态加载,第三方模块需要升级支持才可编译成模块. tinywan@tinyw ...

  7. nginx日志过滤相同IP方法

    nginx日志过滤相同IP方法分析nginx日志的时候,统计ip怎么过滤重复的?awk '{print $2}' nginx.log |sort -rn |uniq -c |sort -rn |hea ...

  8. nginx限制请求之二:(ngx_http_limit_req_module)模块

    相关文章: <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <n ...

  9. [转帖]利用nginx实现负载均衡 | 哈希算法,sticky模块实现session粘滞

    利用nginx实现负载均衡 | 哈希算法,sticky模块实现session粘滞 2018年08月02日 10:06:03 Minza 阅读数 483 https://blog.csdn.net/ha ...

随机推荐

  1. 时间类型:datetime,timestamp,date,time,year

    时间类型 1.年月日时分秒:datetime #取值范围# '1000-01-01 00:00:00'到'9999-12-31 23:59:59' 占存储8B:表示的范围比timestamp大:支持0 ...

  2. 【REST详述及RESTful规范】

    目录 Web服务交互 理解REST 什么是资源? 什么是URI.URL? 统一资源接口 资源的表述 状态转移 小结 "RESTful是一种软件的架构风格.设计风格,为客户端和服务端的交互提供 ...

  3. C++记录(一)

    1 extern 符表示该变量不是当前作用域定义的,用于声明. 如extern i;表示i不是当前作用域里的,是其他某个include的cpp文件里的变量. 2 int *p=0;相当于初始化p为空指 ...

  4. 吴裕雄 python 人工智能——基于神经网络算法在智能医疗诊断中的应用探索代码简要展示

    #K-NN分类 import os import sys import time import operator import cx_Oracle import numpy as np import ...

  5. ZooKeeper-集群模式配置

    (1)下载安装zookeeper,进行基本的配置,详细教程:https://www.cnblogs.com/excellencesy/p/11956485.html (2)在三台虚拟机上分别按照以上方 ...

  6. Ubuntu mysql 在线安装

    $ sudo apt install mysql-server

  7. 【C语言】创建一个函数,将输入的2个数排序

    #include <stdio.h> void fun(int *x,int*y) { int t; if(*x>=*y) { t=*x;*x=*y;*y=t; } } main() ...

  8. 巨头环伺下,青云QingCloud的云计算之路危机重重

    编辑 | 于斌 出品 | 于见(mpyujian) 随着互联网.科技行业的深入发展,国内云计算市场正越来越爆发出惊人的潜力,大量大.中.小型玩家开始不断发力,涌现出了一大批增速明显的行业玩家. 以BA ...

  9. java 限制每隔15分钟才允许执行一次程序

    由于公司订餐平台,有个用户催单业务,每当用户点击催单按钮时,商家就会收到消息提示,如果用户频繁的发起催单请求,这样商家就会不停的收到消息提醒,所以想限制用户至少每隔15分钟才可以催单一次 我采取了以下 ...

  10. windows maven配置

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...