我的nginx.conf中有多个“服务器”块。该文档对于server_name匹配发生的顺序似乎是错误的。
我的conf看起来像这样:
server {
listen 80
server_name domain.com *.domain.com
# do stuff
}
server {
listen 80
server_name sub.domain.com *.sub.domain.com
# do something else
}
我试图找出为什么host = www.sub.domain.com的请求将转到正确的位置(第二台服务器),而文档表明它应该转到第一台服务器。
Nginx文档指示已按顺序检查服务器块是否匹配,这意味着对主机* .sub.domain.com的任何请求都应由第一台服务器而不是第二台服务器捕获。(http://wiki.nginx.org/HttpCoreModule#server_name)
此外,*通配符匹配任意数量的子域部分,因此* .domain.com匹配www.sub.domain.com。(http://nginx.org/en/docs/http/server_names.html#wildcard_names)
如果此文档有误,实际的匹配顺序是什么?