码迷,mamicode.com
首页 > 其他好文 > 详细

0906作业

时间:2017-09-18 11:01:44      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:nginx


  1. 复习Location规则顺序,优先级演练;

    1. =/                            只会匹配/的情况,优先级location/低

    2. =/index.html            只会匹配/inde.html情况,优先级最高

    3. /                                匹配任何请求,优先级最低

    4. /image/                      匹配任何/image路径

    5. ~* (.*)\.(html|jpg|png)  匹配html后缀的文件请求,但是优先级比上一个略低

    1. localtion是nginx配置中的一个指令,用于访问url匹配,而这个location中所配置的每个指令将会启动不同的模块去完成相应的工作

    2. =    字符精确匹配   ^~ 最大前缀匹配    / 不带任何前缀的最大前缀匹配     ~ 大小写相关的正则匹配    ~* 大小写无关的正则匹配 

    3. 匹配规则优先顺序为:(location=)>(location完整路径)>(location^~路径)>(location~*|~正则匹配)>(location部分起始路径)>(location /)

    4. 示例:

  2. 编写20个Nginx Rewrite生产环境案例;

    1. if($host = ‘www.aaa.com‘ ){  rewrite ^/(.*)$  http://www.baidu.com/$1 permanent; }匹配域名为www.aaa.com时,301 重定向到百度

    2. rewrite  ^/$  http://baidu.com/index01.html  permenent;    方位此主机时,301重定向到baidu.com/index01.html

    3. rewrite ^/jfedu/test01/$  /newindex.html last;    方位主机/jfedu/test01时,重定向到/newindex.html,浏览器地址不变

    4. if($hosts != ‘www.jfedu.net‘){ rewrite ^/(.*)$ http://jfedu.net/$1 permenent;}多域名重定向,访问域名不为www.jfedu.net时,重定向到jfedu.net

    5. if(! -e $request_filename){rewrite ^/(.*)$ /index.php last;}访问不存在的文件或者目录,重定向到index.php

    6. rewrite ^/(.+)/(\d+)  、$1?id=$2    last;目录对换,路由美化

    7. if($http_user_agent ~ MSIE){rewrite ^/(.*)$ /ie/$1 break;}判断浏览器类型

    8. location ~* \.(sh|flv|mp3)$ {return 403} 禁止访问以.sh、.flv、.mp3位文件名的文件

    9. if($http_user_agent ~* "(Android)|(iPhone)|(Mobile)|(WAP)|(UCWECB)"){rewrite ^/$ http://m.jfedu.net/ permenent;}    将移动用户访问跳转至移动端

    10.  if($args ~* tid=13){rewrite 404;}匹配访问字符串跳转

    11. rewrite ^/([0-9]+)/jfedu/(.+)$ /index.php?tid/$1/items=$2 last;    访问100690/jfedu/123 重定向至/index.php?tid/100690/items=123

    12. rewrite  ^/([a-zA-Z]+[\w\-]*)/([a-zA-Z]+[\w\-]*)$ /index.php?rr=$1/$2 last;  匹配到/user/admin-login跳转到/index.php?rr=$1/$2

    13. rewrite  ^/([a-zA-Z]*)$ /$1.html last;

    14. set $rewrite true;  if($remote_addr =  ‘192.168.111.126‘)}{set $rewrite false;} if($rewrite = true) { rewrite (.+) http://www.abc.com last; }  对特定的IP开启访问

    15. location /post {rewrite (.+) http://www.abc.com/bbs$1 permenent; }将post下的访问重定向到post下面

    16. if($request_uri ~* ^/note\.php\?product_code=(.*)$ ){ rewrite (.*) http://abc.com/list permenent; } 将请求时/noet.php?product_code=123重定向到/list

    17. location ~* /upload/.*\.php$ {return 404;}将upload下的ph请求返回404

    18. if($request_uri ~* ^/form-(140|141)-(\d+)\.html$ ){rewrite (.* http://www.abc.com/list permenent;)}   将/form-401-5.html请求重定向到/list页面

    19. rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/job_show_$3.html last;    将根目录下的某个文件指向2级目录

    20. if($http_host ~* “^(.*)\.i\.c1studio\.com$”){ rewrite ^(.*) http://top.jbxue.com; break }  三级域名跳转,将www.a.i.c1stu.com跳转top.jbxue.com

3. 预习Nginx 日志分析及Nginx配置文件优化;  

  1. log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘

  2.                   ‘$status $body_bytes_sent "$http_referer" ‘

  3.               ‘"$http_user_agent"  $request_time‘

  4. $remote_addr 记录客户端真实的IP地址        $server_name  虚拟主机名称

  5. $http_x_forward_for http请求的真实IP        $remote_user   记录客户端用户名称

  6. $request  记录请求的url和HTTP协议        $status    记录返回的http请求的状态

  7. $upstream_status  upstream状态          $ssl_protocal  ssl协议版本

  8. $body_bytes_sent   发送给客户端的字节数,不包括相应头的大小

  9. $bytes_sent   发送给客户端的总字节数        $connection_requests当前通过一个连接获得请求的数量            

  10. $http_referer    记录从哪个页面连接访问的    $http_user_agent记录客户端浏览器类型

  11. $request_length  请求的长度,包括请求行,请求头和请求正文

  12. $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” 博客,谢绝转载!

0906作业

标签:nginx

原文地址:http://12615759.blog.51cto.com/12605759/1966211

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!