|
|
51CTO旗下网站
|
|
移动端

2.6 Locations—where,when,how

《精通Nginx(第2版)》第2章配置指南,在本章,我们看到了如何构建Nginx的配置文件。模块化的本质值得思考,从某种意义上讲,Nginx本身也是模块化的。本节为大家介绍Locations—where,when,how。

作者:李红军 译来源:人民邮电出版社|2017-08-28 21:05

2.6 Locations—where,when,how

location指令可以用在虚拟服务器server部分,并且意味着提供来自客户端的URI或者内部重定向访问。除少数情况外,location也可以被嵌套使用,它们被作为特定的配置尽可能地处理请求。

location定义如下。

  1. location [modifier] uri {...} 

或者是命名location。

  1. location @name {…} 

命名location仅对内部访问重定向,在进入一个location之前,它会保留被请求的URI部分。命名location只能够在server级别定义。

表2-7中的修饰符会影响location的处理。

表2-7location修饰符

当一个请求进入时,URI将会被检测匹配一个最佳的location。

没有正则表达式的location被作为最佳的匹配,独立于含有正则表达式的location顺序。

在配置文件中按照查找顺序进行正则表达式匹配。在查找到第一个正则表达式匹配之后结束查找。由这个最佳的location提供请求处理。

这里比较匹配描述的是解码URI,例如,在URI中的 "%20",将会匹配location中的 " "(空格)。

命名location仅可以在内部重定向的请求中使用。表2-8中的指令仅在location中使用。

表2-8仅用于location的指令

另外,http部分的其他指令也可以在location中指定,附录A指令参考有完整列表。

指令try_files在这里也值得一提,它也可以用在server部分,但是最常见的还是在location部分中。try_files指令将会按照给定它的参数列出顺序进行尝试,第一个被匹配的将会被使用。它经常被用于从一个变量去匹配一个可能的文件,然后将处理传递到一个命名location,如下面的示例所示。

  1. location / {  
  2.  try_files $uri $uri/ @mongrel;  
  3. }  
  4. location @mongrel {  
  5.  proxy_pass http://appserver;  

在这里有一个隐含的目录索引,如果给定的URI作为一个文件没有被找到,那么处理将会通过代理被传递到appserver。我们将会在本书的其他部分讨论如何最好地使用location、try_files和proxy_pass来解决特定的问题。

除以下前缀外,locations可以被嵌套。

具有 "=" 前缀。

命名location。

最佳实践表明正则表达式location被嵌套在基于字符串的location内,如下面的示例所示。

  1. # first, we enter through the root  
  2. location / {  
  3.  # then we find a most-specific substring  
  4.  # note that this is not a regular expression  
  5.  location ^~ /css {  
  6.   # here is the regular expression that then gets matched  
  7.   location ~* /css/.*\.css$ {  
  8.   }  
  9.  }  


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

超级网管员——网络设备

本书深入细致地介绍了用于构建网络的最重要的硬件设备——交换机、路由器、安全设备和无线设备,涵盖了原理、参数、分类、适用、规划、接口...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊