Nginx Location指令详解
location / { #location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令,都是在location中体现的,主要是基于nginx接受到的请求字符串,对用户请求的UIL进行匹配,并对特定的指令进行处理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三方模块的配置也是在location模块中配置。
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优先级找出一个最佳匹配,而后应用其配置
在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个uri,uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。
location优先级:(location =) > (location ^~ 路径) > (location ,* 正则顺序) > (location 完整路径) > (location 部分起始路径) > (/)
语法规则: location [ = | ~ | ~* | ^~ ] uri { … }
- = #用于标准uri前,需要请求字串与uri精确匹配,大小写敏感,如果匹配成功就停止向下匹配并立即处理请求
- ^~ #用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头,对uri的最左边部分做匹配检查,不区分字符大小写
- ~ #用于标准uri前,表示包含正则表达式,并且区分大小写
- ~* #用于标准uri前,表示包含正则表达式,并且不区分大写
- 不带符号(/) #匹配起始于此uri的所有的uri
- \ #用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号
- 匹配优先级从高到低:=, ^~, /*, 不带符号(/)
|