前言

终于理解了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块,转发到对应的应用服务器中去。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐