首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nginx系列之server_name定义与匹配规则

Nginx系列之server_name定义与匹配规则 server_name用来指定请求中的Host头部,在上一节的基于域名的虚拟机中,nginx匹配的规则就是根据server_name的不同,结合请求头的...1. server_name的配置格式之通配符匹配 # nginx.conf server { listen 80; server_name *.example.org;...... } server { listen 80; server_name mail.*; ... } 通配符格式中的*号只能在域名的开头结尾,并且...如果开头没有~,则nginx认为是精确匹配,或者如果匹配字符中含有*号,则会被认为是通配符匹配,不过非法的通配符格式。在逻辑上,需要添加^和锚定符号。注意,正则匹配格式中.为正则元字符,如果需要匹配....3. server_name "*"; 它被错误地解释为万能的名称。 它从不用作通用通配符服务器名称。相反,它提供了server_name_in_redirect指令现在提供的功能。

8.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

Nginx域名访问处理过程 原

通常情况下是在主域名的之前使用通配符*来指定所有的二级域名指向同一个地址,例如 *.example.com。范域名解析有很强的应用场景,例如动态生成二级域名多级域名等等。...在上面的这个配置设定下,一个请求如果能够同时匹配多个 server_name 的规则(例如同时匹配上一个通配符和一个正则表达式),Nginx 会使用顺序靠前的匹配 server 来处理该请求。...通配符规则 一个星号(*)表示一个通配符,他表示匹配一个多个URL允许使用的字符的组合。通配符只能出现在字符串的开头和末尾,并且只能用点号(.)与其他字符串分割。...正则表达式规则 正则表达式必须以(~)符号开头: #正则表达式 server_name ~^www\d+\.example\.net$; 否则 Nginx 会认为这是一个固定的字符串通配符字符串。...最后,如果在一个 server 中只有一个 server_name 的指令配置,Nginx 仅仅会考虑 listen 命中而不会去判断域名是否命中。

3K30

Nginx学习日志(五)多个server_name匹配以及default_server的问题

nginx 多个 server_name 如何匹配? 简单看这个问题,会觉得这个问题很蠢,怎么匹配?不就是根据 server_name 名字匹配的么?...是的,我最开始也是这么觉得的,并且在之前的笔记:Nginx学习日志(二)通过反向代理将不同域名映射到不同的端口 当中的记录也是根据名字匹配。...但是当我新解析一个域名:blog.hjljy.cn 到服务器上面的时候, nginx server_name 里面还没有来得及配置这个域名只配置了:www.hjljy.cn 这个域名,这时在浏览器输入...然后在 nginx 配置了多个 server_name ,访问对应的域名都可以跳转到对应的域名服务上去,情况符合之前写的笔记:Nginx学习日志(二)通过反向代理将不同域名映射到不同的端口 。...server { listen 80 default_server; server_name _; return 404; } ---- 标题:Nginx

2.4K20

HTTP请求是如何关联Nginx server{}块的?

另外,为了加快匹配速度,Nginx将字符串域名、前缀通配符、后缀通配符都放在了哈希表中,该设计充分使用了CPU的批量载入主存功能。...首先,server_name支持精确地完全匹配,例如: server_name blog.taohui.pub; 其次,server_name可以通过*符号作为通配符来匹配一类域名,比如: server_name...事实上,对于监听同一地址、端口的server{ }块而言,Nginx会在进程启动时在收集所有server_name后,将精确匹配的字符串域名、前缀通配符、后缀通配符分别构建出3个哈希表,并将正则表达式构建为一个链表...比如,blog.taohui.tech同时可以匹配以下2个前缀通配符server_name *.tech; server_name *.taohui.tech; 但Nginx会匹配命中*.taohui.tech...其中匹配优先级是这样的:精确的字符串匹配优先级最高,其次是前缀通配符和后缀通配符匹配(这两者匹配时,如果多个通配符命中,会选择最长的server_name),最后才是正则表达式匹配。

28220

国庆节前端技术栈充实计划(1):使用Nginx配置HTTPS 服务器

为了确保服务器发送的是完整的证书链,可以使用 openssl命令行通用程序,例如: $ openssl s_client -connect www.godaddy.com:443 ......基于名称的 HTTPS 服务器 当配置两个多个HTTPS虚拟主机服务器侦听单个IP地址时会出现常见问题: server { listen 443 ssl; server_name...另一种方法是使用带有通配符名称的证书,例如 *.example.org。 通配符证书能保护指定域的所有子域,但只限一个级别。...证书可以在 SubjectAltName字段中包含完全匹配和通配符名称,例如 example.org和 *.example.org。...; ... } 服务器名称指示 单个IP地址上运行多个HTTPS虚拟服务器的更通用的解决方案是 TLS服务器名称指示扩展(SNI,RFC 6066),其允许浏览器在SSL握手期间同时发送请求的服务器名称

92730

Nginx(四)

配置 sendfile 传输文件 基本语法为: sendfile on | off; 可以开启关闭 sendfile 方式传输,默认为 off。...监听端口 语法为: listen {port} [default_server] [ssl] 基于名称的虚拟主机 配置主机名的指令为 server_name,语法为: server_name {name...每个名称就是一个域名,在 name 中可以使用通配符,但只能用在三段字符串的首段尾段,两段字符串的尾段。...在包含多个虚拟主机的配置文件中,可能出现一个名称被多个虚拟主机的 server_name 匹配成功,Nginx 做出如下规定: 对于匹配方式的不同,按照以下优先级选择虚拟主机 精准匹配 通配符在起始位置匹配...server_name 成功 通配符在结束位置匹配 server_name 成功 正则匹配 server_name 成功 以上四种匹配,如果被同一级多次匹配成功,则被首次匹配成功的虚拟主机处理 基于

36730

PHP程序员玩转Linux系列-Nginx中的HTTPS

7.PHP程序员玩转Linux系列-nginx初学者引导 创建一个HTTPS服务器 在nginx.conf配置文件中,在server块里面通过listen指令指定ssl的参数,设置好服务器证书和私钥文件的路径...server { listen 443 ssl; server_name www.example.com; ssl_certificate...1.0.5版本开始,nginx默认使用ssl_protocols SSLv3 TLSv1和ssl_ciphers HIGH:!...基于名称的HTTPS服务 一个很普遍的问题出现了,那就是解决当在一个ip地址配置监听两个多个HTTPS服务. server { listen 443 ssl; server_name...另一种方式是证书名称那里使用通配符,比如: *.example.org,但是 通配符名称只能用在一级子域名上.这个名称可以匹配www.example.org ,但是不能匹配example.org www.sub.example.org

73830

Nginx(三)------nginx 反向代理

filter 可以设置为 dataready httpready 。   ...12、ssl:标识符,设置会话连接使用 SSL模式进行,此标识符和Nginx服务器提供的 HTTPS 服务有关。 ②、server_name   该指令用于虚拟主机的配置。...server_name 123.com www.123.com   二、可以使用通配符“*”,但通配符只能用在由三段字符组成的首段或者尾端,或者由两端字符组成的尾端。...“m”($表示结尾)   以上匹配的顺序优先级如下: 1 ①、准确匹配 server_name 2 ②、通配符在开始时匹配 server_name 成功 3 ③、通配符在结尾时匹配 server_name...成功 4 ④、正则表达式匹配 server_name 成功 2、基于 IP 地址的虚拟主机配置   语法结构和基于域名匹配一样,而且不需要考虑通配符和正则表达式的问题。

1.4K41

Nginx---静态资源处理

listen指令 default_server说明 server_name指令 配置方式一:精确匹配 配置方式二:使用通配符配置 配置三:使用正则表达式配置 匹配执行顺序 server_name总结 location...www.dhy.cooom 这个域名如果本地不存在,外网不存在,那么就无法解析 因此我们这里配置的服务名一定要是可以解析的域名或者ip 配置方式二:使用通配符配置 server_name中支持通配符"*...",但需要注意的是通配符不能出现在域名的中间,只能出现在首段尾段,如: server { listen 80; server_name *.itcast.cn www.itheima.*; #...No1:准确匹配server_name No2:通配符在开始时匹配server_name成功 No3:通配符在结束时匹配server_name成功 No4:正则表达式匹配server_name成功...指令在接到请求后的匹配顺序分别为: 准确的server_name匹配 以通配符开始的字符串 以通配符结束的字符串 匹配正则表达式 nginx 的 default_server 指令可以定义默认的 server

2.5K20
领券