location:http核心模块
语法:location [=|~|~*|^~|@] /uri/ { ... }
默认值:no
使用字段:server
这个参数根据URI的不同需求来进行配置,可以使用字符串与正则表达式匹配,如果要使用正则表达式,你必须指定下列前缀:
1、~* 不区分大小写。
2、~ 区分大小写。
要确定该指令匹配特定的查询,程序将首先对字符串进行匹配,字符串匹配将作为查询的开始,最确切的匹配将被使用。然后,正则表达式的匹配查询开始,匹配查询的第一个正则表达式找到后会停止搜索,如果没有找到正则表达式,将使用字符串的搜索结果。
在一些操作系统,如Mac OS X和Cygwin,字符串将通过不区分大小写的方式完成匹配(0.7.7),但是,比较仅限于单字节的语言环境。
正则表达式可以包含捕获(0.7.40),并用于其它指令中。
可以使用“^~”标记禁止在字符串匹配后检查正则表达式,如果最确切的匹配location有这个标记,那么正则表达式不会被检查。
使用“=”标记可以在URI和location之间定义精确的匹配,在精确匹配完成后并不进行额外的搜索,例如有请求“/”发生,则可以使用“location = /”来加速这个处理。
即使没有“=”和“^~”标记,精确的匹配location在找到后同样会停止查询。
下面是各种查询方式的总结:
1、前缀“=”表示精确匹配查询,如果找到,立即停止查询。
2、指令仍然使用标准字符串,如果匹配使用“^~”前缀,停止查询。
3、正则表达式按照他们在配置文件中定义的顺序。
4、如果第三条产生一个匹配,这个匹配将被使用,否则将使用第二条的匹配。
例 :
location = / { # 只匹配 / 的查询. [ configuration A ] } location / { # 匹配任何以 / 开始的查询,但是正则表达式与一些较长的字符串将被首先匹配。 [ configuration B ] } location ^~ /images/ { # 匹配任何以 /images/ 开始的查询并且停止搜索,不检查正则表达式。 [ configuration C ] } location ~* \.(gif|jpg|jpeg)$ { # 匹配任何以gif, jpg, or jpeg结尾的文件,但是所有 /images/ 目录的请求将在Configuration C中处理。 [ configuration D ] }
各请求的处理如下例:
·/ -> configuration A
·/documents/document.html -> configuration B
·/images/1.gif -> configuration C
·/documents/1.jpg -> configuratio
注意你可以以任何顺序定义这4个配置并且匹配结果是相同的,但当使用嵌套的location结构时可能会将配置文件变的复杂并且产生一些比较意外的结果。
expires:http头处理模块
语法:expires [time|@time-of-day|epoch|max|off]
默认值:expires off
使用字段:http, server, location
这个指令控制是否在应答中标记一个过期时间,如果是,如何标记。
·off 将禁止修改头部中的 Expires和Cache-Control字段。
·epoch 将Expires头设置为1 January, 1970 00:00:01 GMT。
·max 将Expires头设置为31 December 2037 23:59:59 GMT,将Cache-Control最大化到10 years。
·如果将指令设置为一个不带@标记的值,那么过期时间将是应答时间的相对时间(如果这个时间在“modified”之前),或者是文件的修改时间(当"modified"存在,在版本0.7.0和0.6.32可用),并且可以指定一个负的时间,它将Cache-Control头设置为no-cache比较。
·如果指令的值被设置为一个带@标记的值,那么将指定一个绝对的time-of-day过期时间,可以指定两种格式分别为Hh或Hh:Mm,其中H的大小范围为0到24,M的大小范围为0到59(在0.7.9和0.6.34可用)。
一个非负的时间值将Cache-Control头设置为 max-age = #,#将适当的换算为秒数。
注意:expires仅仅适用于200, 204, 301, 302,和304应答
重要补充内容:
URL重写模块
break
语法:break
默认值:none
使用字段:server, location, if
完成当前设置的规则,停止执行其他的重写指令。
if
语法:if (condition) { ... }
默认值:none
使用字段:server, location
判断一个条件,如果条件成立,则后面的大括号内的语句将执行,相关配置从上级继承。
可以在判断语句中指定下列值:
·一个变量的名称;不成立的值为:空字符传""或者一些用“0”开始的字符串。
·一个使用=或者!=运算符的比较语句。
·使用符号~*和~模式匹配的正则表达式:
·~为区分大小写的匹配。
·~*不区分大小写的匹配(firefox匹配FireFox)。
·!~和!~*意为“不匹配的”。
·使用-f和!-f检查一个文件是否存在。
·使用-d和!-d检查一个目录是否存在。
·使用-e和!-e检查一个文件,目录或者软链接是否存在。
·使用-x和!-x检查一个文件是否为可执行文件。
return
语法:return code
默认值:none
使用字段:server, location, if
这个指令结束执行配置语句并为客户端返回状态代码,可以使用下列的值:204,400,402-406,408,410, 411, 413, 416与500-504。此外,非标准代码444将关闭连接并且不发送任何的头部。
rewrite
语法:rewrite regex replacement flag
默认值:none
使用字段:server, location, if
按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。
注意重写规则只匹配相对路径而不是绝对的URL,如果想匹配主机名,可以加一个if判断,如:
if ($host ~* www\.(.*)) { set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1为'/foo',而不是'www.mydomain.com/foo' }
可以在重写指令后面添加标记。
如果替换的字符串以http://开头,请求将被重定向,并且不再执行多余的rewrite指令。
标记可以是以下的值:
·last - 完成重写指令,之后搜索相应的URI或location。
·break - 完成重写指令。
·redirect - 返回302临时重定向,如果替换字段用http://开头则被使用。
·permanent - 返回301永久重定向。
相关推荐
在nginx配置中,通过rewrite规则可以将对某个URL的请求重写到实际的文件路径。 6. 反向代理配置:在nginx配置中,proxy_pass指令用于指定后端的服务器地址,这里指向了本地的8080端口。同时,还通过proxy_set_...
1. **Nginx配置基础** Nginx的配置文件通常位于`/etc/nginx/`目录下,其中`nginx.conf`是主配置文件,它包含了整个Nginx服务器的基本设置。`conf.d`目录则用于存放多个独立的配置片段,这种方式使得配置管理更加...
5. **location**块:这是Nginx配置中最细粒度的部分,用于匹配请求的URL并执行相应的操作。 ### 二、Nginx负载均衡 Nginx支持多种负载均衡策略,如轮询、最少连接数、IP哈希等,可以有效地分发客户端请求到后端...
- **location**: 配置URL匹配规则,如`location / { ... }`匹配所有请求。 - **proxy_pass**: 反向代理,指定后端服务器地址。 - **rewrite**: URL重写规则,使用正则表达式进行匹配和替换。 - **try_files**: 按...
`http`块是全局配置,`server`块代表一个独立的监听端口,而`location`块则用于处理特定的URL匹配规则。 1. **基本配置**:Nginx的配置文件通常包含`user`(运行Nginx的服务用户和组)、`worker_processes`(工作...
在本例中,Nginx配置文件可能是为了在Docker容器内优化网络服务性能和资源利用率。 4. **配置文件详解**:Nginx的配置文件通常以`.conf`为扩展名,包含一系列指令和块。`http`、`server`和`location`是最基本的配置...
本文将深入探讨如何通过Nginx配置文件来设置一级域名和二级域名,以及如何利用Nginx的反向代理功能。 首先,了解一级域名和二级域名的概念至关重要。一级域名是互联网上顶级的域名,如.com、.org、.net等。二级域名...
在原始Nginx配置中,定义了基本的server块,监听80端口,并对请求的静态资源进行缓存控制和URL重写。配置中还包含了对不同HTTP错误状态码的处理,如404、502和500等。 在修改后的配置中,添加了新的变量$flag和一...
**Nginx中的Location匹配规则详解** ...理解并熟练掌握Nginx的`location`匹配规则对于优化服务器配置、提升网站性能至关重要。在实际应用中,应结合具体需求灵活运用各种匹配方式和标志,以实现高效、精准的请求处理。
- **location块**: 根据URL匹配规则,执行不同的处理逻辑,如反向代理、静态文件服务等。 ### 2. Nginx启动、关闭与重启 - **启动Nginx**: 通常使用`sudo service nginx start`或`sudo systemctl start nginx`命令...
5. **Location块**:`location`块用于匹配请求的URL并执行相应的配置,例如限制静态资源的访问: ``` location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { ... } ``` 6. **负载均衡(Upstream块)**:`upstream`...
在server部分,我们可以看到,listen用于设置监听端口,server_name用于设置服务器名称,access_log用于设置访问日志,location用于设置URL匹配规则,expires用于设置文件过期时间,root用于设置文件根目录,access_...
**Nginx配置详解** Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、稳定性和高并发处理能力而闻名。在系统优化和负载均衡方面,Nginx扮演着至关重要的角色。本文将深入探讨Nginx的配置过程,包括基本配置...
**二、Nginx配置伪静态** Nginx作为高性能的HTTP和反向代理服务器,常用于部署Web应用。配置Nginx支持伪静态,可以使URL更友好,有助于SEO优化。对于ThinkPHP框架,配置过程如下: 1. **创建配置文件**:在Nginx的...
5. **location块**: 在server块内,用于匹配特定的URL并执行相应的操作,如反向代理、静态文件服务等。 **Keepalived核心配置文件keepalived.conf** Keepalived的配置文件`keepalived.conf`包含了健康检查、VRRP...
在提供的Nginx配置文件中,我们可以看到很多重要的指令和设置项,这些设置项对于优化Nginx服务性能至关重要。接下来,我们将逐一解析这些配置项的意义及用法。 #### 二、基本配置 1. **`user`**: - **含义**: ...
`http`块定义了全局设置,`server`块用于配置监听端口和服务器名称,`location`块则处理特定的URL匹配。 2. **若依项目配置**: 在配置Nginx为若依项目服务时,你需要在`server`块内指定服务器监听的IP和端口,...
5. **Nginx配置**:在Nginx中,URL重写通常在`location`块中进行。配置示例中,`location /`块处理所有请求,首先检查请求的文件是否存在,如果不存在则根据规则重写URL。`break`关键字用于停止当前`location`块的...