1. 程式人生 > >Nginx正則表達式之匹配操作符詳解

Nginx正則表達式之匹配操作符詳解

而且 message jce tail 兩個 version 速度 體系 防盜

  開發十年,就只剩下這套架構體系了! >>>
  
  ##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正則表達式之匹配操作符詳解