nginx配置:server_name的作用
前言
终于理解了server_name
一、server_name是什么?
server_name就是访问部署了nginx那台服务器的域名、ip、localhost。(一个机器可以有多个域名,server_name可以配置不同的域名)
server {
listen 8088;
#定义使用 www.nginx.cn访问
server_name www.aa.com;
location = /50x.html {
root html;
}
}
server {
listen 8088;
#定义使用 www.nginx.cn访问
server_name www.bb.com;
location = /50x.html {
root html;
}
}
nginx里面的server模块可以配置相同的端口,然后这里会根据不同的域名,跳转到不同的server模块中
二、匹配优先级
server_name与host匹配优先级如下:
1、完全匹配
2、通配符在前的,如*.test.com
3、在后的,如www.test.*
4、正则匹配,如~^\.www\.test\.com$
如果都不匹配
1、优先选择listen配置项后有default或default_server的
2、找到匹配listen端口的第一个server块
总结
server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。