nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为:1、准确的server_name匹配,例如:
server {
listen 80;
server_name frady.info www.frady.info;
...
}
2、以*通配符开始的字符串:
server {
listen 80;
server_name *.frady.info;
...
}
3、以*通配符结束的字符串:
server {
listen 80;
server_name www.*;
...
}
4、匹配到的正则表达式:
server {
listen 80;
server_name ~^(?<www>.+)\.frady\.info$;
...
}
nginx将按照1,2,3,4的顺序对server name进行匹配,只有有一项匹配以后就会停止搜索,所以我们在使用这个指令的时候一定要分清楚它的匹配顺序(类似于location指令)。
来个复杂的,这样既可以匹配泛域名,又可以匹配部分以blog开头的域名
两个都是正则,优先级一样,哪个匹配的最精确就会匹配到哪个
#匹配*.frady.info
server_name ~^(.+)?\.frady\.info$;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
以下是理所当然的写法,其实是错误的,因为*会优先于正则,所以正则处写的都匹配不到
#匹配*.frady.info
server_name *.frady.info;
#匹配blog*.frady.info
~^blog(.+)?\.frady\.info$;
你也可能写出的是这样的
#匹配blog*.frady.info
~*^blog(.+)?\.frady\.info$;
用regular expressions tester测试没有问题,放到nginx里,然后发现报错了
后来才想到域名其实是不区分大小写的,所以这块是不需要nginx来处理
官方的说明:
1.exact name
2.longest wildcard name starting with an asterisk, e.g. “*.example.org”
3.longest wildcard name ending with an asterisk, e.g. “mail.*”
4.first matching regular expression (in order of appearance in a configuration file)
分享到:
相关推荐
server_name指令可以设置基于域名的虚拟主机,根据请求头部的内容,一个ip的服务器可以...server_name nginx.*; server_name jb51.netg bucknell.net brackley.org; server_name localhost litchfield bleddington; s
nginx_tcp_proxy_module-master.zip
今天在做nginx反向代理apache的时候出了一点点问题,原来后端apache用的端口是8080通过反向代理后,使用wireshark抓包发现location头域数值为http://192.168.1.154:8080/wuman/ 如果... server_name www.boke.com; l
包含yamdi-1.9.tar.gz nginx_mod_h264_streaming-2.2.7.tar.gz nginx-1.8.1
nginx_limit_access_module - 可通过指定的 HTTP POST 接口中的值来拒绝请求。 示例配置: http { limit_access_zone zone=one:5m bucket_number=10007 type=ip; server { listen 80; server_name ...
NGINX第三方模块:nginx_upstream_hash-0.3.1.tar.gz。
nginx-1.8.0_linux Linux版0积分免费下载nginx-1.8.0_linux Linux版0积分免费下载nginx-1.8.0_linux Linux版0积分免费下载nginx-1.8.0_linux Linux版0积分免费下载nginx-1.8.0_linux Linux版0积分免费下载nginx-...
nginx 基础配置与参数说明(中文备注)
官方nginx 镜像不带主动健康,本镜像将 nginx_upstream_check健康检查 打包到了镜像中。
nginx_http_push_module 基于nginx的web push实现。
后来,通过查看源代码发现MediaWiki是根据$_SERVER[‘SERVER_NAME’]做的跳转,顺藤摸瓜,发现了下列问题: 在一个Nginx虚拟主机中,可以绑定多个server_name,例如: 而server_name的先后顺序的不同,对PHP程序中...
fastdfs-nginx-module_v1.16.tar.gz源码包,nginx支持fastdgs的插件
nginx_upstream_check_module模块,2019年11月6日18:11:19下载的
Nginx所需环境的安装,及nginx安装,nginx相关功能开启,后端节点健康检查插件安装,静态资源缓存插件,缩略图插件安装等。
NGINX第三方模块:nginx_upstream_hash-0.3.2版本。。。
WebServerUid WebServerUid是一个小宝石,可用于表示应用程序中的“ UID”,其中“ UID”是由Apache的或nginx的生成的唯一ID。 使用这些模块,您可以在网站的每个访问者登录之前为其生成唯一的ID,并将其添加到所有...
nginx_tcp_proxy_module-master 是nginx的TCP模块
nginx 的 default_server 指令可以定义默认的 server 去处理一些没有匹配到 server_name 的请求,如果没有显式定义,则会选取第一个定义的 server 作为 default_server。 在了解到如上规则后,我们可以捕获未做绑定...
nginx_upstream_check_module-master,淘宝技术团队开发的,适用1.11