客户端发出一个http请求时,nginx收到后会取出header头中的host,与nginx.conf中每个server的server_name进行匹配,以此决定到底由哪一个server块来处理这个请求。
server_name与host匹配优先级顺序如下:
location [=|~|~*|^~] /uri/ { … }
=
开头表示精确匹配
^~
开头表示uri以某个常规字符串开头,理解为匹配 url路径即可
~
表示区分大小写的正则匹配
~*
表示不区分大小写的正则匹配
!~
和!~*
分别为区分大小写不匹配及不区分大小写不匹配 的正则
/
通用匹配,任何请求都会匹配到。
如果匹配规则以^
开头,就是匹配以指定字符串开头的路径,如果没有就是匹配url中的内容是否包含指定字符串
如果匹配规则以$
结尾,就是匹配以指定字符串结尾的路径
多个location配置的情况下匹配顺序为(当有匹配成功时候,停止匹配,按当前匹配规则处理请求):
- 优先匹配
=
- 其次匹配
^~
- 按照文件中的匹配顺序执行
- 最后匹配
/
Location 官网:http://nginx.org/en/docs/http/ngx_http_core_module.html#location
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx中server块的匹配顺序 - Python技术站