正則表達式!!!

  正則表達式(Regular Expression)使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些符合某個模式的文本。許多程序設計語言都支持利用正則表達式進行字符串操做,perl內建了一個功能強大的正則表達式引擎pcre,正則表達式這個概念最初由UNIX中的工具軟件sed grep等普及開來。php

  其中正則表達式中「\」表示轉義,這是個坑,正則表達式好早以前就接觸過了,但因爲其過於抽象,因此一直沒往腦子裏記,而後就被坑了。。。在nginx的配置文件裏有:css

      1 server{
      2 
      3     listen 8054;
      4     root /home/users********;
      5     access_log /home/users/***/var/logs/nginx/faren.log main;
      6     error_log /home/users/***/var/logs/nginx/faren_error.log;
      7     index index.php;
      8     
      9    location / {
     10             include        fastcgi_params;
     11             fastcgi_param  SCRIPT_FILENAME  $document_root/matrix/index.php;
     12             fastcgi_param  REQUEST_URI /matrix/faren$fastcgi_script_name;
     13             fastcgi_pass   127.0.0.1:10053;
     14             fastcgi_connect_timeout 5s;
     15             fastcgi_read_timeout 5s;
     16             fastcgi_send_timeout 5s;
     17         }
     18 
     19   location ~ \.(js|css|jpg|jpeg|png|gif|ico)$ {
     20          root /home/users/*********;
     21     }
     22 }

在上面第19行的配置裏包含了regular expression。這裏再寫一下關於nginx的配置中location的的資源標識語法:java

URI,是uniform resource identifier,統一資源標識符,用來惟一的標識一個資源。而URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL能夠用來標識一個資源,並且還指明瞭如何locate這個資源。而URN,uniform resource name,統一資源命名,是經過名字來標識資源,好比mailto:java-net@java.sun.com。也就是說,URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。nginx


這裏的location能夠用文字字符串或者正則表達式,正好上面例子包含了兩個,下面細說一下nginx當收到了一個http請求,他的處理流程:正則表達式

  解析收到的http請求------->>>>express

  查找配置文件的http層級裏面的server層級,找到適配的域名(由於有可能有多個虛擬主機)—————>>>>編輯器

  進入server層級根據請求的url,找到適配的uri————>>>>ide

  根據具體狀況若是是靜態則nginx本身處理,若是是.php的則給fastcgi工具

其中在尋找適配的uri時,遵循以下規則:url

  首先搜尋配置文件裏的文字字符串表示的uri 有匹配的存着,而後搜尋正則表達式表示的uri,若是命中則按着這個uri,若是無命中則找文字字符匹配的結果。

用文字字符串和正則表達式表示uri的語法詳見:http://wiki.nginx.org/HttpCoreModule#location

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息