`
mengdejun
  • 浏览: 408081 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nginx location 指令的使用(中文翻译)

    博客分类:
  • Php
阅读更多

location

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

default: no
默认:否

context: server
上下文:server

This directive allows different configurations depending on the URI. It can be configured using both conventional strings and regular expressions. To use regular expressions, you must use the prefix ~* for case insensitive match and ~ for case sensitive match.
这个指令随URL不同而接受不同的结构。你可以配置使用常规字符串和正则表达式。如果使用正则表达式,你必须使用 ~* 前缀选择不区分大小写的匹配或者 ~ 选择区分大小写的匹配。

To determine which location directive matches a particular query, the conventional strings are checked first. Conventional strings match the beginning portion of the query and are case-sensitive – the most specific match will be used (see below on how nginx determines this). Afterwards, regular expressions are checked in the order defined in the configuration file. The first regular expression to match the query will stop the search. If no regular expression matches are found, the result from the convention string search is used.
确定 哪个location 指令匹配一个特定指令,常规字符串第一个测试。常规字符串匹配请求的开始部分并且区分大小写,最明确的匹配将会被使用(查看下文明白 nginx 怎么确定它)。然后正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。如果没有找到匹配的正则表达式,使用常规字符串的结果。

There are two ways to modify this behavior. The first is to use the prefix “=”, which matches an exact query only. If the query matches, then searching stops and the request is handled immediately. For example, if the request “/” occurs frequently, then using “location = /” will expedite the processing of this request.
有两个方法修改这个行为。第一个方法是使用 “=”前缀,将只执行严格匹配。如果这个查询匹配,那么将停止搜索并立即处理这个请求。例子:如果经常发生”/”请求,那么使用 “location = /” 将加速处理这个请求。

The second is to use the prefix ^~. This prefix is used with a conventional string and tells nginx to not check regular expressions if the path provided is a match. For instance, “location ^~ /images/” would halt searching if the query begins with /images/ – all regular expression directives would not be checked.
第二个是使用 ^~ 前缀。如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

Furthermore it is important to know that NGINX does the comparison not URL encoded, so if you have a URL like “/images/%20/test” then use “/images/ /test” to determine the location.
而且它重要在于 NGINX 做比较没有 URL 编码,所以如果你有一个 URL 链接’/images/%20/test’ , 那么使用 “images/ /test” 限定location。

To summarize, the order in which directives are checked is as follows:
总结,指令按下列顺序被接受:

1. Directives with the = prefix that match the query exactly. If found, searching stops.
1. = 前缀的指令严格匹配这个查询。如果找到,停止搜索。
2. All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
2. 剩下的常规字符串,长的在前。如果这个匹配使用 ^~ 前缀,搜索停止。
3. Regular expressions, in order of definition in the configuration file.
3. 正则表达式,按配置文件里的顺序。
4. If #3 yielded a match, that result is used. Else the match from #2 is used.
4. 如果第三步产生匹配,则使用这个结果。否则使用第二步的匹配结果。

Example:
例子:

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 ]
}

Example requests:
例子请求:

*

/ -> configuration A
*

/documents/document.html -> configuration B
*

/images/1.gif -> configuration C
*

/documents/1.jpg -> configuration D

Note that you could define these 4 configurations in any order and the results would remain the same.
注意:按任意顺序定义这4个配置结果将仍然一样。

分享到:
评论

相关推荐

    Nginx Location 指令简明指南

    Nginx是高性能的HTTP和反向代理服务器,它也用作负载均衡器、邮件代理和HTTP缓存。Nginx的配置文件中包含多个指令,其中Location指令是用于处理特定URI...掌握Location指令的使用,对于配置和优化Nginx服务器至关重要。

    nginx location匹配实例详解

    Nginx配置指令location匹配符优先级和安全问题详解Nginx location 匹配规则Nginx服务器的location指令匹配规则详解利用nginx如何匹配多个条件Nginx ...location匹配规则nginx 匹配规则小总结(推荐)Nginx Location指令URI匹

    Nginx关于location的匹配规则详解.docx

    - **`@`**:定义命名的`location`,用于内部重定向,通常配合`proxy_pass`或`return`等指令使用。 4. **重写规则** - `rewrite`指令允许我们修改请求的URL,可以结合`break`、`last`、`redirect`、`permanent`等...

    nginx location配置详细解释.pdf

    本文将对 Nginx `location` 配置指令进行详细的解释,并结合示例来帮助读者更好地理解和运用。 #### 二、Location 配置指令解析 `location` 指令是 Nginx 配置文件中的一个核心组件,它允许我们基于 URL 对请求...

    nginx_location

    Nginx 的 `location` 指令是配置 Web 服务器路由请求的关键部分,用于根据请求的 URI 来决定如何处理请求。以下是对 `location` 指令的...正确使用 `location` 指令可以优化 Nginx 的性能,并减轻后端服务器的压力。

    nginx location中uri的截取的实现方法

    在Nginx配置中,`location`指令是用于匹配HTTP请求URI并执行相应处理的关键部分。本文将深入探讨如何在`location`中实现URI的截取,并解释`root`、`alias`以及`proxy_pass`指令在处理URI时的不同行为。 ### 1. `...

    Nginx Location指令URI匹配规则详解小结

    **Nginx Location指令是HTTP模块中的核心配置项,用于根据预定义的URL匹配规则接收并处理用户请求。Location指令的语法如下:** ```markdown location [=|~|~*|^~|@] /uri/ { … } location @name { … } ``` 1. *...

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

    Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 nginx ...

    nginx location 配置 正则表达式实例详解

    在实际使用中,应根据具体需求选择合适的匹配方式,同时注意`location`指令的顺序,因为Nginx会按照配置文件中的顺序依次尝试匹配,直到找到第一个匹配项为止。此外,多做测试以验证配置的实际效果是避免误解和问题...

    NGINX location 在配置中的优先级.docx

    NGINX 中的 location directive 是一个非常重要的配置指令,它可以根据不同的 URL 模式来匹配不同的请求路径。但是,location 的配置顺序并不是固定的,而是根据 Location 表达式的优先级来决定的。 Location ...

    详解Nginx Location配置

    解决这个问题,第一的反映是直接使用 Nginx 的 location 指令来解决,不过在给出答案之前,我们先来了解一下 Nginx location 指令的基础。 Nginx 区块配置概念 在 Nginx 的配置文件中,通常会用两个常用的区块...

    nginx配置location总结location正则写法及rewrite规则写法

    Nginx 的 `location` 指令是配置服务器路由请求的关键部分,它允许你根据请求的URI来定向请求到不同的处理程序或者返回特定的响应。`location` 的正则写法和 `rewrite` 规则是 Nginx 配置中的高级特性,用于实现灵活...

    nginx利用referer指令实现防盗链配置

    本文将详细介绍如何利用 Nginx 的 `referer` 指令进行防盗链配置。 `Referer` 字段在 HTTP 请求头中用于指示用户是从哪个 URL 跳转到当前请求的页面的。在图片防盗链的场景下,如果 Nginx 服务器接收到一个请求,其...

    nginx location中多个if里面proxy_pass的方法

    在Nginx配置中,`location`指令是用于定义URL路由和处理规则的关键部分,它决定了请求应如何被代理、重定向或静态文件服务。在本文中,我们将深入探讨`location`指令的匹配机制以及在多个`if`语句中使用`proxy_pass`...

    nginx的各项详细配置-超多注释

    通过`proxy_pass`指令,Nginx可以作为反向代理服务器转发请求到后端应用服务器,实现负载均衡、缓存等功能。例如: ```nginx location /api { proxy_pass http://backend_server; proxy_set_header Host $host; ...

Global site tag (gtag.js) - Google Analytics