Nginx中的服务器名称规则

 

版权信息:可以任意转载, 转载时请务必以超链接形式标明文章原文出处,谢谢
原文出处: http://libiao.appspot.com/2010/01/nginx_server_names_rules.html

 

服务器名称(Server Names)

服务器名称是通过指令server_name来指定的。但是在前面讲的部分,使用的是确切的服务器名称(exact names),当然在实际中还可以使用wildcard names以及正则表达式的服务器名称

server {

      listen 80;

      server_name nginx.org  www.nginx.org;

      …

}

 

server {

      listen 80;

      server_name *.nginx.org;

      …

}

 

server {

      listen 80;

      server_name mail.*;

}

 

server {

      listen 80;

      server_name ~^(?<user>.+)\.nginx\.net$;

      …

}

 

对于一个具体的情况,nginx是通过如下的顺序来查找对应的虚拟服务器名称的

1.     如果有确切的server name,那就选它了

2.     如果匹配*.nginx.org

3.     如果匹配mail.*

4.     最后匹配配置文件的正则表达式

对于上面的匹配,按照从上到下的顺序,如果找到匹配的话,就停止搜索。

 

Wildcard名称

Wildcard虚拟服务器名称只能够放在名称的最开头或者最尾部,因此,www.*.nginx.org或者w*.nginx.org是非法的。当然上面的这两个可以通过正则表达式来完成,即~^www\..+\.nginx\.org$~^w.*\.nginx\.org$。一个*可以匹配好几个名称,因此,*.nginx.org不仅仅可以匹配www.nginx.org,也可以匹配www.sub.nginx.org

当然这里面有一个特殊的情况,即.nginx.org其表示匹配nginx.org*.nginx.org

 

正则表达式服务器名称

Nginx中,正则表达式跟PCRE一样。如果使用正则表达式的话,必须使用~开头,否则会理解为确切的服务器名称,server_name如下图所示:

server_name ~^www\d+\.nginx\.org$

同时不要忘记在正则表达式的前头加上^符号,在后头加上$符号。如果在正则表达式中包括有符号{或者},则必须要用“”包起来

server_name “~^(?<name>\w\d{1,3}+)\.nginx\.net$”

其中在正则表达式里面命名的情况下,在后续中可以作为变量使用,举例如下:

server {

      server_name ~^(www\.)?(?<domain>.+)$;

     

      location / {

           root  /sites/$domain;

      }

}

 

PCRE(?<domain>.+)中,这跟python中常用的(?P<domain>.+)是一样的,嘿嘿

 

关于虚拟服务器名称的其他的说明

1.     如果没有设置server_name,那么就使用hostname作为其server_name

2.     如果HTTP Request头中没有host这一项,则在server_name中指定一个空字符串“”

server {

listen 80;

server_name nginx.org www.nginx.org “”;

}

3.     如果用户使用的是ip地址来访问,则其HTTP Request头的host项是ip地址,则需要在server_name上指定ip地址

server {

listen 80;

server_name nginx.org www.nginx.org “” 192.168.1.1;

}

4.     对于匹配所有的异常情况的话,使用

server {

      listen 80 default_server;

      server_name _;

      return 444;

}

 

对虚拟服务器名称的优化

最好使用

server {

      listen 80;

      server_name nginx.org www.nginx.org *.nginx.org;

      …

}

而不是

server {

      listen 80;

      server_name .nginx.org;

      …

}

 

如果自己定义了很多很长的server_name的话,最好在http层次上将server_names_hash_max_sizeserver_names_hash_bucket_size设大一些

http {

      server_names_hash_bucket_size 64;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值