回复讨论(解决方案) nginx中的server_name 也会走一遍 hosts,看是否对应,hosts就相当于一个小型的域名服务器。应该是这样
你在浏览器中 输入一个网址 会先check一下你本地的hosts 文件 如果有做映射的话 就直接通过映射的ip访问你的 web服务器(这边是nginx) 当这个请求被nginx 获得后 他会check一下请求的域名和servername是否匹配,匹配到的话 就根据相应的配置返回内容, 没有匹配到的话 就根据默认的配置返回内容。
我想问一下windows中hosts中的映射项和nginx中配置的server的host的关系是什么?当使用浏览器进行访问时,域名是否先在hosts文件中进行查找,然后通过ip地址去访问资源,那nginx是不是不会对该请求进行匹配(因为是ip地址)?
是通过ip访问资源的,但是nginx会找到请求头里面的hostname,来匹配需要那个配置文件来处理该响应
get /rabbit/tracking-ad/main.js.map http/1.1host: csdnimg.cn //注意这个,nginx会根据这个匹配servernameconnection: keep-alivecache-control: max-age=0user-agent: mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/41.0.2272.118 safari/537.36accept: */*referer: http://bbs.csdn.net/forums/phpaccept-encoding: gzip, deflate, sdchaccept-language: zh-cn,zh;q=0.8
如果请求头里面没有 host ,nginx也会根据顺序查找到处理该请求的配置,一般默认的80端口都是开启的,会匹配到默认的配置里面
