本地nginx配置两个server,配置如下
server {
listen 192.168.1.110:80;
server_name rock.sandbox.com;
xxxxxxxxx
}
server {
listen 80 default_server;
server_name 192.168.1.110 192.168.2.110 mysql.sandbox.com;
xxxxxxxxx
}
这个时候我访问192.168.1.110 发现请求解析到了第一个server中去了。
server_name的匹配规则不是先完整,后通配再正则么?完整不是应该匹配到第二个server么?
server_name都不匹配最后走default_server
我要是把第一个server的listen改成 listen 80;在请求就会解析到第二个server。
这是什么问题?
第一个server我只想让1网段的访问,所以listen加上ip了。
难道server_name的匹配规则还和listen有关系?
求大神指点。
nginx版本 1.6.3
ubuntu 16.04
我觉得不是说“
server_name
的匹配规则还和listen
有关系”,而是listen
是socket
层面的事情,而server_name
只是url
的解析,当然只有监听到的请求才能被解析,于是这就回到了一个tcp
监听端口的问题:因此,题主情况还并没有涉及
server_name
处理优先级的问题。