本文主要介绍了Server和Location匹配逻辑相关内容。
上篇文章回顾: 浅谈SYNPROXY
Server的匹配逻辑
Nginx在决定请求由哪个server块执行时,主要关注的是server块中的listen和server_name两个字段
listen指令
listen字段定义server响应的ip和端口,如果没有明确配置listen字段,默认监听0.0.0.0:80(root)或者0.0.0.0:8080(非root)
listen可以被配置为:
-
一个ip和端口的组合
-
一个单独的ip,默认监听80端口
-
一个单独的端口,默认监听所有的ip接口
-
一个Unix socket路径
其中最后一项通常只用于在不同的server之间传递请求
选择要使用的server的规则如下:
-
Nginx首先将所有"不完整"的listen指令进行转换,比如没有listen字段的转换为listen 0.0.0.0:80,listen 1.1.1.1转换为listen 1.1.1.1:80等
-
Nginx根据请