Nginx 基本配置和日志分析

  最近在维护的一个项目,路由转发规则都统一通过Nginx转发,所以再次参考部分博文和书本,熟悉Nginx的基本配置,还有一个重点也是日志的分析

  Nginx 常用模块是server块,location块。

  常用的location块配置:

  语法规则: location [=|~|~*|^~] /uri/ { … }
  = 表示精确匹配,这个优先级也是最高的
  ^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
  ~  表示区分大小写的正则匹配
  ~* 表示不区分大小写的正则匹配(和上面的唯一区别就是大小写)
  !~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则
  / 通用匹配,任何请求都会匹配到,默认匹配.

  例子:静态文件的匹配规则

  location ~* .*\.(js|css)?$

  {

  }

  location ~* .*\.(png|jpg|gif|jpeg|bmp|ico)?$
  {
  }

  location ~* .*\.(zip|rar|exe|msi|iso|gho|mp3|rmvb|mp4|wma|wmv|rm)?$
  {
  deny all; //禁止这些文件下载,大家可以根据自己的环境来配置
  }

  与php作为apache的一个模块运行不同,nginx完全是一个代理很强的服务器,相当于接到请求php文件然后交给php-fpm来处理,php的几种运行模式这里不详说

  location ~ \.php$ {

root   /httpd;

fastcgi_pass   127.0.0.1:8080;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

include        fastcgi_params;

}

  server块主要是虚拟主机的配置:

  server{
    server_name  test;
    listen 80;
    root /opt/www/test;

    location /
    {

    }
  }

  Nginx 主要模块还有Rewrite模块,可以使url更加友好等。书写的重点是正则表达式,匹配url来做一些事情,所以正则表达式是我们做什么开发都必须掌握的东西,与大家共勉,本人的正则写的很烂。。

  语法规则:

  break
  语法:break
  默认值:none
  使用字段:server, location, if
  完成当前设置的重写规则,停止执行其他的重写规则。

  if
  语法:if (condition) { … }
  默认值:none
  使用字段:server, location
  注意:尽量考虑使用trp_files代替。
  判断的条件可以有以下值:
  1. 一个变量的名称:空字符传”“或者一些“0”开始的字符串为false。
  2. 字符串比较:使用=或!=运算符
  3. 正则表达式匹配:使用~(区分大小写)和~*(不区分大小写),取反运算!~和!~*。
  4. 文件是否存在:使用-f和!-f操作符
  5. 目录是否存在:使用-d和!-d操作符
  6. 文件、目录、符号链接是否存在:使用-e和!-e操作符
  7. 文件是否可执行:使用-x和!-x操作符

  return
  语法:return code
  默认值:none
  使用字段:server, location, if
  停止处理并为客户端返回状态码。非标准的444状态码将关闭连接,不发送任何响应头。可以使用的状态码有:204,400,402-406,408,410, 411, 413, 416与500-504。如果状态码附带文字段落,该文本将被放置在响应主体。相反,如果状态码后面是一个URL,该URL将成为location头补值。没有状态码的URL将被视为一个302状态码。

  rewrite
  语法:rewrite regex replacement flag
  默认值:none
  使用字段:server, location, if
  按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。可以在重写指令后面添加标记。
  注意:如果替换的字符串以http://开头,请求将被重定向,并且不再执行多余的rewrite指令。
  **尾部的标记(flag)可以是以下的值:
  last – 停止处理重写模块指令,之后搜索location与更改后的URI匹配。
  break – 完成重写指令。
  redirect – 返回302临时重定向,如果替换字段用http://开头则被使用。
  permanent – 返回301永久重定向。

  rewrite_log
  语法:rewrite_log on | off
  默认值:rewrite_log off
  使用字段:server, location, if
  变量:无
  启用时将在error log中记录notice级别的重写日志。

  set
  语法:set variable value
  默认值:none
  使用字段:server, location, if
  为给定的变量设置一个特定值。

  uninitialized_variable_warn
  语法:uninitialized_variable_warn on|off
  默认值:uninitialized_variable_warn on
  使用字段:http, server, location, if
  控制是否记录未初始化变量的警告信息。

重写规则组成部分

 任何重写规则的第一部分都是一个正则表达式

  可以使用括号来捕获,后续可以根据位置来将其引用,位置变量值取决于捕获正则表达式中的顺序,$1引用第一个括号中的值,$2引用第二个括号中的值,以此类推。如:

  ^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$

  $1是两个小写字母组成的字符串,$2是由小写字母和0到9的数字组成的5个字符的字符串,$3将是个文件名,$4是png、jpg、gif中的其中一个。

重写规则的第二部分是URI

请求被改写。该URI可能包含正则表达式中的捕获的位置参数或这个级别下的nginx任何配置变量。如:

/data?file=$3.$4

如果这个URI不匹配nginx配置的任何location,那么将给客户端返回301(永久重定向)或302(临时重定向)的状态码来表示重定向类型。该状态码可以通过第三个参数来明确指定。

重写规则的第三部分
   第三部分也就是尾部的标记(flag)。 last标记将导致重写后的URI搜索匹配nginx的其他location,最多可循环10次。如:

rewrite ‘^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$‘ /data?file=$3.$4 last;

break指令可以当做自身指令。如:

if ($bwhog) {
  limit_rate 300k;
  break;
   }

另一个停止重写模块处理指令是return, 来控制主HTTP模块处理请求。 这意味着,nginx直接返回信息给客户端,与error_page结合为客户端呈现格式化的HTML页面或激活不同的模块来完成请求。如果状态码附带文字段落,该文本将被放置在响应主体。相反,如果状态码后面是一个URL,该URL将成为location头补值。没有状态码的URL将被视为一个302状态码。如:

location = /image404.html {
  return 404 "image not found\n";
 }

日志分析包括了日志切割和常用的一些简单分析的bash脚本:

切割日志以nginx为例:

  #nginx日志切割脚本

#!/bin/bash

   #设置日志文件存放目录
   logs_path="/usr/local/nginx/logs/"
  #设置pid文件
  pid_path="/usr/local/nginx/nginx.pid"

#重命名日志文件
  mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log

#向nginx主进程发信号重新打开日志
  kill -USR1 `cat ${pid_path}`

至于日志分析根据具体需求来写shell,其实重点就是熟悉强大的bash脚本才能写

 参考:http://www.jb51.net/article/53954.htm

 全文参考的博客:http://linux.cn/article-4279-weixin.html

      书本:《Nginx高性能服务器详解》      

时间: 2024-08-09 18:07:03

Nginx 基本配置和日志分析的相关文章

Nginx(二) Nginx主机配置、日志分割、日志自动备份

Nginx主机配置.日志分割.日志自动备份 一 主机配置以及按主机分割日志文件 1.在目录/usr/local/nginx/conf下 修改nginx.conf文件的server节点,并添加一个新的server节点 2.因为使用了Nginx默认的全局日志格式(main),这个日志格式默认是注释掉的,需要再nginx.conf中放开. 3.创建www.solr.com以及www.hadoop.com两个主机欢迎页面根节点文件夹以及文件. 切换到Nginx的安装目录下,复制Nginx默认的欢迎页面根

nginx awstats 安装配置和日志分析

1.Nginx安装目录:/usr/local/nginx Nginx配置文件存放目录:/usr/local/nginx/conf/nginx.conf Nginx日志目录:/usr/local/nginx/logs Awstats安装目录:/usr/local/awstats Awstats配置文件存放目录:/etc/awstats 日志切割脚本存放目录:/usr/local/nginx/nginx_log.sh 2.Nginx日志切割 修改nginx.conf配置文件,使AWSTATS支持分析

Apache、Web软件、Apache安装、常用配置项、区域配置、日志分析

Apache 安装 具体步骤: 1.准备工作 为了避免发生端口冲突.程序冲突等现象,建议将使用rpm方式安装的httpd及相关依赖包(如果有的话)卸载.如图所示: 2.源码编译及安装 插入安装光盘并挂载,进入到光盘目录中,将httpd源码包释放到/usr/src/目录下,并且切换到展开后的源码目录中. 根据服务器的实际应用需要,可以灵活设置不同的定制选项. 上述配置命令中,各选项的含义如下: --prefix:指定将httpd服务程序安装到哪个目录. --enable-so:启用动态加载模块支持

NAS日志分析用户指南

摘要: NAS"日志分析"新功能,旨在帮助用户更好地监控文件系统资源.通过该功能,用户可以方便地跟踪系统性能问题,记录文件系统上的数据操作情况,审计文件删除等相关操作,有效监控各区域内文件系统资源大盘和明细信息,实时报警等 NAS文件存储是阿里云提供给用户的云上高性能文件系统存储服务.数据安全和性能是用户对文件存储服务最关注的两大因素,经常有用户反映以下这些情况: - 我想查看自己的文件存储服务性能指标(吞吐,iops等等) - 我想了解自己的文件系统内数据操作分布(读.写.新建.删除

ELK日志分析系统(实例!!!)

ELK日志分析系统概述 ELK是Elasticsearch.Logstash.Kibana的简称 Elasticsearch是实时全文搜索和分析引擎 Logstash是一个用来搜集.分析.过滤日志的工具 Kibana是一个基于Web的图形界面,用于搜索.分析和可视化存储在 Elasticsearch指标中的日志数据 日志服务器 提高安全性 集中存放日志 缺陷:对日志的分析困难 ELK日志分析系统 收集数据:LogstashAgent 建立索引:ElasticSearchCluster 数据可视化

centos 7搭建ELK日志分析系统

一.ELK的组成 ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成,其官方网站为https://www.elastic.co/cn Elasticsearch:是个开源分布实时分析搜索引擎,建立在全文搜索引擎库Apache Lucens基础上,同时隐藏了Apache Luces的复杂性.Elasticsearch将所有的功能打包成一个独立的服务,并提供了一个简单的RESTful API接口,它具有分布式.零配置.自动发现.索引自动分片.索引副本机制.RESTf

ELK安装配置及nginx日志分析

一.ELK简介1.组成ELK是Elasticsearch.Logstash.Kibana三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合使用,而且又都先后归于 Elastic.co 公司名下,故有此简称.Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等.Logstash是一个完全开源的工具,它可以对你的日志进行收集.分析,并将其存储供以后使用.kibana 是一个开源和

ELK系列一:ELK安装配置及nginx日志分析

本文分三个部分介绍了elk.elk安装配置及基于filebeat分析nginx日志的配置. 第一部分:elk介绍 一.什么是elk ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana.这三款软件都是开源软件,通常是配合使用. 二.Elasticsearch 1.Elasticsearch介绍 Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全

Linux服务器access_log日志分析及配置详解(二)

默认nginx / Linux日志在哪个文件夹? 一般在 xxx.xxx.xxxx.com/home/admin 路径下面的error.log文件和access.log文件error_log logs/error.log; #错误日志access_log logs/access.log; #访问日志 1. access_log 访问日志 access_log为访问日志,记录所有对apache服务器进行请求的访问,它的位置和内容由CustomLog指令控制,LogFormat指令可以用来简化该日志