nginx请求是如何找到对应的vhost的

vhost和server对应

vhost的匹配逻辑

在请求nginx时,判断请求属于哪个vhost,主要是server块中的listenserver_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根据请求的ip和端口创建一个与请求最匹配的server块列表,优先匹配指定了特定ip的server块,其次才会选择listen 0.0.0.0的这种server块.但是无论是哪种情况,端口必须是完全匹配的

参考1
参考2

posted @ 2022-10-27 17:31  焦耳|程  阅读(149)  评论(0编辑  收藏  举报