Nginx服务器的location指令匹配规则详解

 更新时间:2015年12月15日 17:46:14   作者:sookk  
这篇文章主要介绍了Nginx服务器的location指令匹配规则,文中介绍了一种动静态地址分离的方法示例,需要的朋友可以参考下

Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。
nginx location语法
基本语法:location [=|~|~*|^~] /uri/ { … }

  • = 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
  • ~ 为区分大小写匹配(可用正则表达式)
  • ~* 为不区分大小写匹配(可用正则表达式)
  • !~和!~*分别为区分大小写不匹配及不区分大小写不匹配
  • ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。

Location语法语法:location [=|~|~*|^~] /uri/ { … }

注:
1、~   为区分大小写匹配
2、~* 为不区分大小写匹配
3、!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

例子:

location = / {
# matches the query / only.
# 只匹配 / 查询。
[ configuration A ]
}
location / {
# matches any query, since all queries begin with /, but regular
# expressions and any longer conventional blocks will be
# matched first.
# 匹配任何查询,因为所有请求都已 / 开头。但是正则表达式规则和长的块规则将被优先和查询匹配。
[ configuration B ]
}
location ^~ /images/ {
# matches any query beginning with /images/ and halts searching,
# so regular expressions will not be checked.
# 匹配任何已 /images/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。
[ configuration C ]
}
location ~* .(gif|jpg|jpeg)$ {
# matches any request ending in gif, jpg, or jpeg. However, all
# requests to the /images/ directory will be handled by
# Configuration C.
# 匹配任何已 gif、jpg 或 jpeg 结尾的请求。然而所有 /images/ 目录的请求将使用 Configuration C。
[ configuration D ]
}

我的添加模式,动静分离

       location ^~ /(images|scripts|styles|upload)/ {
      root  /www/abc.com/www/htdocs;
      expires 30d;
    }
      location ~*\.(gif|jpg|jpeg|png|css|ico|html)$ {
      root  /www/abc.com/www/htdocs;
      expires 30d;
    }

如果要定义多个location,则可以有2种方式:
 
使用/ :location / { client_max_body_size 200m; proxy_connect_timeout 30; proxy_set_header Host $http_host; proxy_set_header x-forwarded-for $remote_addr; proxy_pass http://127.0.0.1:8008; } location /tmp/{ root /; internal; } 采用这种方式,/tmp可以放在/的下面,因为“/是匹配任何查询,但是正则表达式规则和长的块规则将被优先和查询匹配”
 
使用~ /* : location ~ /tmp/ { root /tmp; internal; } location ~ /* { client_max_body_size 20m; proxy_connect_timeout 30; fastcgi_pass fpass; include fastcgi_params; } 采用这种方式,/tmp则必须放在~ /*这个前面,因为~是正则匹配的,正则匹配是有顺序的,只要匹配上就不会再往下匹配了。除非在conf中有定义=或者^~,也就是说=和^~的优先级最高,如果匹配上,就不会再去匹配其它的规则了。

相关文章

  • nginx常用操作命令详解

    nginx常用操作命令详解

    这篇文章主要介绍了nginx常用操作命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Nginx限制搜索引擎爬虫频率、禁止屏蔽网络爬虫配置示例

    Nginx限制搜索引擎爬虫频率、禁止屏蔽网络爬虫配置示例

    这篇文章主要介绍了Nginx限制搜索引擎爬虫频率、禁止屏蔽网络爬虫配置示例,限制爬虫频率用于一些无良爬虫,禁止爬虫用于一些不需要收录的网站,需要的朋友可以参考下
    2014-07-07
  • nginx服务器通过配置来解决API的跨域问题

    nginx服务器通过配置来解决API的跨域问题

    这篇文章主要给大家介绍了关于nginx服务器是如何配置来解决API跨域问题的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • Nginx中泛域名配置的实例教程

    Nginx中泛域名配置的实例教程

    泛域名就是我们平常指的二级和三级域名等,这里我们来总结一下Nginx中泛域名解析配置的实例教程,包括正则匹配等细节的讲解,需要的朋友可以参考下
    2016-05-05
  • nginx 代理后出现503的解决方法

    nginx 代理后出现503的解决方法

    本文主要介绍了nginx 代理后出现503的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Nginx根据url中的path动态转发到upstream的实现

    Nginx根据url中的path动态转发到upstream的实现

    这篇文章主要介绍了Nginx根据url中的path动态转发到upstream的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • nginx实现反向代理出现502的问题解决

    nginx实现反向代理出现502的问题解决

    本文主要介绍了nginx实现反向代理出现502的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Nginx中配置过滤爬虫的User-Agent的简单方法

    Nginx中配置过滤爬虫的User-Agent的简单方法

    这篇文章主要介绍了Nginx中配置过滤爬虫的User-Agent的简单方法,文中罗列了一些常用搜索引擎的爬虫名称以免造成不必要的过滤,需要的朋友可以参考下
    2016-01-01
  • Nginx+Keepalived实现双机主备的方法

    Nginx+Keepalived实现双机主备的方法

    这篇文章主要介绍了Nginx+Keepalived实现双机主备的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Nginx服务器中强制使用缓存的配置及缓存优先级的讲解

    Nginx服务器中强制使用缓存的配置及缓存优先级的讲解

    这篇文章主要介绍了Nginx服务器中强制使用缓存的配置及缓存优先级的讲解,一定程度上可以帮助大家解决Nginx不缓存或缓存失效的问题,需要的朋友可以参考下
    2016-01-01

最新评论