nginx配置文件中server_name的作用

最近学习了Nginx,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用


一 作用

二 匹配顺序

server_name与host匹配优先级如下:

1、完全匹配
2、通配符在前的,如*.test.com
3、在后的,如www.test.*
4、正则匹配,如~^.www.test.com$

如果都不匹配,则:

1、优先选择listen配置项后有default或default_server的
2、找到匹配listen端口的第一个server块

通过jmeter查看请求头,发现请求头携带了Host,由此可知nginx必定会拿它做uri匹配工作:

三 举例

  1. 修改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
  2. 修改nginx.conf server { listen 80; server_name www; location / { default_type text/html; content_by_lua ngx.say("<p>first</p>") ; } } server { listen 80; server_name www.zkh.com; location / { default_type text/html; content_by_lua ngx.say("<p>second</p>") ; } } server { listen 80; server_name www.zkh.*; location / { default_type text/html; content_by_lua ngx.say("<p>third</p>") ; } } server { listen 80; server_name ~w+.com; location / { default_type text/html; content_by_lua ngx.say("<p>forth</p>") ; } } server { listen 80; server_name ~.*zkh.com; location / { default_type text/html; content_by_lua ngx.say("<p>fifth</p>") ; } }
  3. 访问结果 注意观察匹配规则

四 总结

经验分享 程序员 微信小程序 职场和发展