nginx的servername

作用

  server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。
 

案例

修改nginx.conf
server {
 listen 80;
 server_name www;
 location / {
  default_type text/html;
  content_by_lua '
   ngx.say("

first

")
  ';
 }
}
 
server {
 listen  80;
 server_name www.zkh.com;
 location / {
  default_type text/html;
  content_by_lua '
   ngx.say("

second

")
  ';       
 }
}
 
server {
 listen 80;
 server_name www.zkh.*;
 location / {
  default_type text/html;
  content_by_lua '
   ngx.say("

third

")
  ';
 
 }
}
 
server {
 listen 80;
 server_name ~\w+.com;
 location / {
  default_type text/html;
  content_by_lua '
   ngx.say("

forth

")
  ';       
 }
}
 
server {
 listen 80;
 server_name ~.*zkh.com;
 location / {
  default_type text/html;
  content_by_lua '
   ngx.say("

fifth

")
  ';
 }
}
  修改hosts文件
  118.126.100.138 www.zkh.com
  118.126.100.138 www.zkh.org
  118.126.100.138 zkh.com
  118.126.100.138 zkh.org

 
 
通过jmeter查看请求头,发现请求头携带了Host,由此可知nginx必定会拿它做uri匹配工作
 
匹配顺序
  server_name与host匹配优先级如下:
  1、完全匹配
  2、通配符在前的,如*.test.com
  3、在后的,如www.test.*
  4、正则匹配,如~^\.www\.test\.com$
  如果都不匹配
  1、优先选择listen配置项后有default或default_server的
  2、找到匹配listen端口的第一个server块
————————————————
版权声明:本文为CSDN博主「Kevin_K_H_ZHENG」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cheng_kohui/article/details/82930464

你可能感兴趣的:(nginx的servername)