• 正则表达式!!!


      正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作,perl内建了一个功能强大的正则表达式引擎pcre,正则表达式这个概念最初由UNIX中的工具软件sed grep等普及开来。

      其中正则表达式中“”表示转义,这是个坑,正则表达式好早之前就接触过了,但由于其过于抽象,所以一直没往脑子里记,然后就被坑了。。。在nginx的配置文件里有:

          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的的资源标识语法:

    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。


    这里的location可以用文字字符串或者正则表达式,正好上面例子包含了两个,下面细说一下nginx当收到了一个http请求,他的处理流程:

      解析收到的http请求------->>>>

      查找配置文件的http层级里面的server层级,找到适配的域名(因为有可能有多个虚拟主机)—————>>>>

      进入server层级根据请求的url,找到适配的uri————>>>>

      根据具体情况如果是静态则nginx自己处理,如果是.php的则给fastcgi

    其中在寻找适配的uri时,遵循如下规则:

      首先搜寻配置文件里的文字字符串表示的uri 有匹配的存着,然后搜寻正则表达式表示的uri,如果命中则按着这个uri,如果无命中则找文字字符匹配的结果。

    用文字字符串和正则表达式表示uri的语法详见:http://wiki.nginx.org/HttpCoreModule#location

  • 相关阅读:
    使用Jenkins 生成 Allure 报告时出现Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 错误
    【Chrome】插件开发
    云笔记软件简评
    使用Jekyll + Github Pages搭建静态网站
    Windows和Linux的不同换行符导致脚本执行异常
    使用 Hugo + Github Pages 创建静态网站博客
    Vercel关闭评论 禁止Preview Deployments
    Github SubModule 指南
    epoll高效的原理
    xlrd读取Excel文件报错,for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(,raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format] '; not supported')
  • 原文地址:https://www.cnblogs.com/renzherushe/p/4670900.html
Copyright © 2020-2023  润新知