标签:nginx
复习Location规则顺序,优先级演练;
=/ 只会匹配/的情况,优先级location/低
=/index.html 只会匹配/inde.html情况,优先级最高
/ 匹配任何请求,优先级最低
/image/ 匹配任何/image路径
~* (.*)\.(html|jpg|png) 匹配html后缀的文件请求,但是优先级比上一个略低
localtion是nginx配置中的一个指令,用于访问url匹配,而这个location中所配置的每个指令将会启动不同的模块去完成相应的工作
= 字符精确匹配 ^~ 最大前缀匹配 / 不带任何前缀的最大前缀匹配 ~ 大小写相关的正则匹配 ~* 大小写无关的正则匹配
匹配规则优先顺序为:(location=)>(location完整路径)>(location^~路径)>(location~*|~正则匹配)>(location部分起始路径)>(location /)
示例:
编写20个Nginx Rewrite生产环境案例;
if($host = ‘www.aaa.com‘ ){ rewrite ^/(.*)$ http://www.baidu.com/$1 permanent; }匹配域名为www.aaa.com时,301 重定向到百度
rewrite ^/$ http://baidu.com/index01.html permenent; 方位此主机时,301重定向到baidu.com/index01.html
rewrite ^/jfedu/test01/$ /newindex.html last; 方位主机/jfedu/test01时,重定向到/newindex.html,浏览器地址不变
if($hosts != ‘www.jfedu.net‘){ rewrite ^/(.*)$ http://jfedu.net/$1 permenent;}多域名重定向,访问域名不为www.jfedu.net时,重定向到jfedu.net
if(! -e $request_filename){rewrite ^/(.*)$ /index.php last;}访问不存在的文件或者目录,重定向到index.php
rewrite ^/(.+)/(\d+) 、$1?id=$2 last;目录对换,路由美化
if($http_user_agent ~ MSIE){rewrite ^/(.*)$ /ie/$1 break;}判断浏览器类型
location ~* \.(sh|flv|mp3)$ {return 403} 禁止访问以.sh、.flv、.mp3位文件名的文件
if($http_user_agent ~* "(Android)|(iPhone)|(Mobile)|(WAP)|(UCWECB)"){rewrite ^/$ http://m.jfedu.net/ permenent;} 将移动用户访问跳转至移动端
if($args ~* tid=13){rewrite 404;}匹配访问字符串跳转
rewrite ^/([0-9]+)/jfedu/(.+)$ /index.php?tid/$1/items=$2 last; 访问100690/jfedu/123 重定向至/index.php?tid/100690/items=123
rewrite ^/([a-zA-Z]+[\w\-]*)/([a-zA-Z]+[\w\-]*)$ /index.php?rr=$1/$2 last; 匹配到/user/admin-login跳转到/index.php?rr=$1/$2
rewrite ^/([a-zA-Z]*)$ /$1.html last;
set $rewrite true; if($remote_addr = ‘192.168.111.126‘)}{set $rewrite false;} if($rewrite = true) { rewrite (.+) http://www.abc.com last; } 对特定的IP开启访问
location /post {rewrite (.+) http://www.abc.com/bbs$1 permenent; }将post下的访问重定向到post下面
if($request_uri ~* ^/note\.php\?product_code=(.*)$ ){ rewrite (.*) http://abc.com/list permenent; } 将请求时/noet.php?product_code=123重定向到/list
location ~* /upload/.*\.php$ {return 404;}将upload下的ph请求返回404
if($request_uri ~* ^/form-(140|141)-(\d+)\.html$ ){rewrite (.* http://www.abc.com/list permenent;)} 将/form-401-5.html请求重定向到/list页面
rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/job_show_$3.html last; 将根目录下的某个文件指向2级目录
if($http_host ~* “^(.*)\.i\.c1studio\.com$”){ rewrite ^(.*) http://top.jbxue.com; break } 三级域名跳转,将www.a.i.c1stu.com跳转top.jbxue.com
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" $request_time‘;
$remote_addr 记录客户端真实的IP地址 $server_name 虚拟主机名称
$http_x_forward_for http请求的真实IP $remote_user 记录客户端用户名称
$request 记录请求的url和HTTP协议 $status 记录返回的http请求的状态
$upstream_status upstream状态 $ssl_protocal ssl协议版本
$body_bytes_sent 发送给客户端的字节数,不包括相应头的大小
$bytes_sent 发送给客户端的总字节数 $connection_requests当前通过一个连接获得请求的数量
$http_referer 记录从哪个页面连接访问的 $http_user_agent记录客户端浏览器类型
$request_length 请求的长度,包括请求行,请求头和请求正文
$msec 日志写入时间 $request_time程序响应时间
统计服务器独立IP数 awk ‘{print $1}‘ access_log | sort -r | uniq -c | wc -l统计服务器PV量 awk ‘{print $7}‘ access.log |wc -l 统计服务器的UV awk ‘{print $11}‘ access.log | sort -r | uniq -c | wc -l分析nginx日志截止目前为止访问量前20的IP awk ‘{print $11}‘ access.log | sort | uniq -c | sort -nr |head -20分析日志早上9到12点的总请求量 sed -n ‘/2017:09:00/,/2017:12:00/‘access.log 或者 awk ‘/2017:09:00/,/2017:12:00/‘ access.log | wc -l 分析日志总的独立IP数量 awl ‘{print $1}‘ access.log | sort | uniq -c | wc -l分析日志截止目前为止访问量前20的IP列表 awk ‘{print $1}‘ access.log | sort | uniq -c | sort -nr | head 20分析日志404 502 503 500 499等错误信息页面,打印错误次数大于20的IP awk ‘{if($9~/502|499|500|502|503|504/)print $1,$9}‘ access.log | sort -uniq -c | sort -nr | awk ‘{if($1>20)print $2}‘分析日志访问量最多的页面 awk ‘{print $7}‘ acccess.log | sort | uniq -c | sort -nr |head 20分析日志相应时间大于5秒的url,并打印出时间、URL、访客IP awk ‘{if($NF>5)print $NF,$7,$1}‘ access.log | sort -nr
本文出自 “12605759” 博客,谢绝转载!
标签:nginx
原文地址:http://12615759.blog.51cto.com/12605759/1966211