1、location表达式类型 

  • ~ 表示执行一个正则匹配,区分大小写

  • ~* 表示执行一个正则匹配,不区分大小写

  • ^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。

  • = 进行普通字符精确匹配。也就是完全匹配。

  • @ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

2、location优先级说明

    2018052489675423.jpg

  1. 等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。

  2. ^~类型表达式。一旦匹配成功,则不再查找其他匹配项。

  3. 正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。

  4. 常规字符串匹配类型。按前缀匹配。

3、location优先级示例

  1. location = / {

  2. # 仅仅匹配请求 /

  3.    [ configuration A ]

  4. }

  5. location / {

  6.    # 匹配所有以 / 开头的请求。

  7.    # 但是如果有更长的同类型的表达式,则选择更长的表达式。

  8.    # 如果有正则表达式可以匹配,则优先匹配正则表达式。

  9.    [ configuration B ]

  10. }

  11. location /document/ {

  12.    # 匹配所有以 /document/ 开头的请求。

  13.    # 但是如果有更长的同类型的表达式,则选择更长的表达式。

  14.    # 如果有正则表达式可以匹配,则优先匹配正则表达式。

  15.    [ configuration C ]

  16. }

  17. location ^~ /img/ {

  18.    # 匹配所有以 /img/ 开头的表达式,如果匹配成功,则停止匹配查找。

  19.    # 所以,即便有符合的正则表达式location,也不会被使用

  20.    [ configuration D ]

  21. }

  22. location ~* \.(gif|jpg|jpeg)$ {

  23.    # 匹配所有以 gif jpg jpeg结尾的请求。

  24.    # 但是 以 /img/开头的请求,将使用 Configuration D

  25.    [ configuration E ]

  26. }

        请求匹配实例

  1. / -> configuration A

  2. /index.html -> configuration B

  3. /document/document.html -> configuration C

  4. /img/2.gif -> configuration D

  5. /document/2.jpg -> configuration E

    

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注