全局块:从配置文件到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户,允许生成的worker process数,进程pid存放路径,日志存放路径和类型以及配置文件的引入。
events块:主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对多work process下的网络连接进行序列化,是否允许同时接受多个网络连接,选取哪种事件驱动模型来处理连接请求,每个workprocess可以同时支持的最大连接数。
http块:
- http全局块:配置的指令包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求次数上限等。
- server块:与虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一致的,该技术的产生是为了节省服务器成本;每个http块可以包含多个server块。每个server块相当于一台虚拟主机
location匹配规则:
- 精准匹配:精准匹配的符号标记为“=”,location = /lyh,在所有的匹配规则中,精准匹配的优先级是最高的。
- 普通匹配:普通匹配的符号标记为“^
”,location ^/lyh(注意~ 与 /之间有空格,"^~"是可以省略的,写为location = /lyh),如果一个URL命中多个location普通匹配,则最长的location普通匹配获胜。 - 正则匹配:
正则匹配的类型按照类型符号的不同可以细分为以下4种:
(1)~:标准正则匹配,区分字母大小写,进行正则表达式测试,若测试成功,则匹配成功。
(2)~*:标准正则匹配,不区分字母大小写,进行正则表达式测试,若测试成功,则匹配成功。
(3)!~:反向正则匹配,区分字母大小写,进行正则表达式测试,若测试不成功,则匹配成功。
(4)!~*:反向正则匹配,不区分字母大小写,进行正则表达式测试,若测试不成功,则匹配成功。下面是一个正则匹配的例子,可以匹配以hello.php或hello.asp结尾的URL请求。
如果配置文件中存在多个正则匹配location,那么它们之间的规则是顺序优先的,只要匹配到第一个正则类型的location,就停止后面的正则类型的location测试。
(location =) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 完整路径) > (location 部分起始路径) > (/)