Nginx正则表达式之匹配操作符详解

  开发十年,就只剩下这套架构体系了! >>>
  
  ##tensorflow学习课程
  
  https://developers.google.com/machine-learning/crash-course/ml-intro
  
  ##TensorFlow 如何入门,如何快速学习?
  
  https://www.zhihu.com/question/49909565
  
  ##最初的资料
  
  https://weibo.com/1840408525/EryUJznWr?type=comment#_rnd1542959636500
  
  ##TensorFlow官方文档
  
  https://www.tensorflow.org/
  
  http://www.tensorfly.cn/
  
  http://www.tensorfly.cn/tfdoc/get_started/introduction.html
  
  ##tflearn官方文档
  
  http://tflearn.org/
  
  ##TensorFlow实现深度学习算法的教程汇集:代码+笔记
  
  https://mp.weixin.qq.com/s?__biz=MjM5MDAxNjkyMA==&mid=2650739722&idx=1&sn=eecff5bbe98d9cfccb2939d3b0665dc4&chksm=be4080fd893709ebbc5239eece74b19b6fa2a8fd4f2d9f44b6c0b46755d119495a20692a2f3d&mpshare=1&scene=1&srcid=1120OnCs3I5y6Zofalj5UB5D&from=singlemessage&ascene=1&devicetype=android-27&version=26060632&nettype=ctnet&abtest_cookie=AwABAAoACwANAAMAJJceAFmZHgCKmR4AAAA%3D&lang=zh_CN&pass_ticket=BpJp1Whqy6TQU13KIroTkrjgxbT1X59Q6uDmKe0nnfHJuAob5ZfNOsvtPUQU6iu8&wx_header=1
  
  ##tflearn学习资料
  
  https://blog.csdn.net/u013745804/article/details/78285166
  
  https://yq.aliyun.com/articles/526769
  
  nginx可以在配置文件中对某些内置变量进行判断,从而实现某些功能。例如:防止rewrite、盗链、对静态资源设置缓存以及浏览器限制等等。由于nginx配置中有if指令,但是没有对应else指令,所以判断要分为匹配和不匹配。
  
  字符串表达式支持正则表达式,能设定大小写是否敏感。因此共有四个操作符,
  
  如下:
  
  ~ 区分大小写(大小写敏感)匹配成功
  
  ~* 不区分大小写匹配成功
  
  !~ 区分大小写匹配失败
  
  !~* 不区分大小写匹配失败
  
  1: 限制某些类型的客户端的访问
  
  if指令
  
  所有的Nginx内置变量都可以通过if指令和正则表达式来进行匹配,并且根据匹配结果进行一些操
  
  代码如下 复制代码
  
  location / {
  
  if ($http_user_agent ~ MSIE) {
  
  return 503;
  
  }
  
  }
  
  #限制IE访问
  
  如果把MSIE改成 Mozilla 就基本上把IE和firefox这样pc浏览器限制了
  
  2和3主要是针对盗链做处理
  
  2:针对不同的文件类型
  
  可能这个指令是我们平时使用正则匹配用的最多的指令:
  
  代码如下 复制代码
  
  location ~ .*www.furong157.com.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
  
  if ($http_referer ~www.leyouzaixian2.com* javagg.com) {
  
  #rewrite ^/ http://www.javagg.com/403.html;
  
  return 403;
  
  }
  
  }
  
  3:针对不同的目录
  
  代码如下 复制代码
  
  location /img/ www.mhylpt.com/{
  
  root /data/img/;
  
  if ($http_referer www.mingcheng178.com~* javagg.com) {
  
  rewrite ^/ http://www.admin99.net/images/error.gif
  
  #return 403;
  
  }
  
  }
  
  1.^~ 标识符后面跟一个字符串。
  
  Nginx将在这个字符串匹配后停止进行正则表达式的匹配(location指令中正则表达式的匹配的结果优先使用),如:location ^~ /images/,你希望对/images/这个目录进行一些特别的操作,如增加expires头,防盗链等,但是你又想把除了这个目录的图片外的所有图片只进行增加expires头的操作,这个操作可能会用到另外一个location,例如:location ~* .(gif|jpg|jpeg)$,这样,如果有请求/images/1.jpg,nginx如何决定去进行哪个location中的操作呢?结果取决于标识符^~,如果你这样写:location /images/,这样nginx会将1.jpg匹配到location ~* .(gif|jpg|jpeg)$这个location中,这并不是你需要的结果,而增加了^~这个标识符后,它在匹配了/images/这个字符串后就停止搜索其它带正则的location。
  
  2.= 表示精确的查找地址,
  
  如location =www.mcyllpt.com /它只会匹配uri为/的请求,如果请求为/index.html,将查找另外的location,而不会匹配这个,当然可以写两个location,location = /和location /,这样/index.html将匹配到后者,如果你的站点对/的请求量较大,可以使用这个方法来加快请求的响应速度。
  
  3.@ 表示为一个location进行命名,即自定义一个location,这个location不能被外界所访问,只能用于Nginx产生的子请求,主要为error_page和try_files。
  
  注意,这3个标识符后面不能跟正则表达式,虽然配置文件检查会通过,而且没有任何警告,但是他们并不会进行匹配。
  
  综上所述,location指令对于后面值的匹配顺序为:
  
  1.标识符“=”的location会最先进行匹配,如果请求uri匹配这个location,将对请求使用这个location的配置。
  
  2.进行字符串匹配,如果匹配到的location有^~这个标识符,匹配停止返回这个location的配置。
  
  3.按照配置文件中定义的顺序进行正则表达式匹配。最早匹配的location将返回里面的配置。
  
  4.如果正则表达式能够匹配到请求的uri,将使用这个正则对应的location,如果没有,则使用第二条匹配的结果
  
  ##Why CNN for Image
  
  http://www.cnblogs.com/yangmang/p/7239424.html
  
  ##使用TensorFlow进行特征提取(中层特征)以及mat文件转为tfrecord方法
  
  https://www.dfgjyl.cn .csdn.net/ciel_monkingjay/article/details/78807055
  
  https://www.cnblogs.com/denny402/p/6937084.html
  
  ###CNN、RNN、DNN的区别
  
  https://www.michenggw.com /question/34681168
  
  ##numpy学习资料,与TensorFlow的数据做对比
  
  https://pda.readthedocs.io/en/latest/chp4.html
  
  ##特征工程分类
  
  https://www.gcyl159.com/ /question/28641663
  
  ###风险控制解决方案
  
  https://github.com/wepe/PPD_RiskControlCompetition

你可能感兴趣的:(Nginx正则表达式之匹配操作符详解)