购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 Nginx基本配置说明

对指令和指令块有了初步了解之后,下面将根据2.1节中的配置示例,对Nginx的指令块进行逐一说明,以帮助读者理解每个指令块的作用。

2.2.1 main配置

在http块之前的配置是全局参数,如2.1节配置示例中的Main 1,全局参数对整个Nginx块都产生作用。下面是一个简单示例:

2.2.2 与客户端有关的配置

与客户端有关的配置主要在http块中设置,如2.1节配置中的指令Main 1和server块之间的Main 2就是对客户端进行的配置,其作用是处理与客户端相关的信息。客户端配置常用的指令见表2-1。

表2-1 客户端配置常用的指令

很多指令都可以在多个Main中配置,但不是所有的指令都可以出现在2.1节的配置中的Main 1、Main 2和Main 3里面。例如client_body_timeout可以在http、server、location块中设置,但server_names_hash_bucket_size却只能出现在http块中。

表2-1中的指令和客户端的请求操作有直接关系,熟悉这些指令对配置和优化Nginx有很大的帮助。

2.2.3 server块

server块即虚拟主机部分,如果请求中的Host头和server_name相匹配,则将请求指向对应的server块,示例如下:

server_name支持使用通配符正则表达式,支持配置多域名、服务名称。当有多个server块时,会存在匹配的优先级问题,优先级顺序如下:

1.精确的名字;

2.以*开头的最长通配符名称,如*.testnginx.com;

3.以*结尾的最长通配符名称,如testnginx.*;

4.按照文件顺序,第1个匹配到的正则表达式;

5.如果没有匹配到对应的server_name,则会访问default_server。

2.2.4 location块

location块在server块中使用,它的作用是根据客户端请求URL去定位不同的应用。即当服务器接收到客户端请求之后,需要在服务器端指定目录中去寻找客户端所请求的资源,这就需要使用请求URL匹配对应的location指令。表2-2是URL在location块中的匹配规则说明。

表2-2 URL在location块中的匹配规则说明

表2-2中匹配的优先级顺序为如下。

“=”优先级最高,如果“=”匹配不到,会和“^~”进行匹配;继而是“~”,如果有多个“~”,则按照在文件里的先后顺序进行匹配;如果还匹配不到,则与“/uri”进行匹配;通用匹配“/”的优先级最低,如果找不到其他配置,就会进行通用匹配;“@”表示命名空间的位置,通常在重定向时进行匹配,且不会改变URL的原始请求。

建议: 打开Debug模式并观察日志,会看到每个请求的执行过程,包括匹配到对应location的操作。

location块也支持嵌套配置:

有些指令只能在location块中执行,主要有如下3个

· internal:表示该location块只支持Nginx内部的请求访问,如支持rewrite、error_page等重定向,但不能通过外部的HTTP直接访问。

· limit_except:限定该location块可以执行的HTTP方法,如GET。

· alias:定义指定位置的替换,如可以使用以下配置。

上述配置表示如果匹配到/a/test.json的请求,在进入 location块后,会将请求变成/c/x/a/test.json。 rhnNP2aRAjGwRvIrpp/Cs8KXQ3RfIodV0bT6k3RBOF2vhTFiG4PUPnvuA7fw0QrR

点击中间区域
呼出菜单
上一章
目录
下一章
×