nginx配置文件中server_name的作用

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


文章目录

      • 一 作用
      • 二 匹配顺序
      • 三 举例
      • 四 总结


一 作用

   server name 为虚拟服务器的识别路径。因此不同的域名会通过请求头中的HOST字段,匹配到特定的server块,转发到对应的应用服务器中去。
   当我们通过hosts文件指定IP与域名的对应关系(如:10.10.124.120 www.tesbas.com)之后,对域名的访问会映射成对应的IP。这个ip就是nginx的公网IP 。然后server name 为虚拟服务器的识别路径。因此不同的域名会转发到对应的应用服务器中去

二 匹配顺序

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匹配工作:
nginx配置文件中server_name的作用_第1张图片

三 举例

  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("

    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

    ") '; } }
  3. 访问结果
    nginx配置文件中server_name的作用_第2张图片
    在这里插入图片描述
    注意观察匹配规则


四 总结

   如有错误恳请指正,如有侵权请联系我删除
   参考文章:
     https://blog.csdn.net/cheng_kohui/article/details/82930464
     https://www.cnblogs.com/a1304908180/p/10524615.html
     https://blog.csdn.net/LYLLOAD/article/details/79089410

你可能感兴趣的:(2020春节假期,nginx)