正则表达式!!!

  正则表达式(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

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息