周日晚上写点东西,让周末感觉更加充实,记录若干个Nginx匹配域名的规则
首先说个常识,在nginx中,每一个server{}都是一个虚拟主机,域名绑定在server段的server_name上。
假设某个域名已经解析到服务器ip上,但nginx还没绑定此域名,默认访问nginx配置中的第一个server{}
下面集合实际配置案例,说几个匹配规则
1、同一个server_name中,可以匹配多个域名,例如
上面的server_name中有“a.local.com”和“b.local.com”两个域名,它们可以访问同一个目录
2、完整匹配
上面所举例子既是完整匹配,表示完整匹配一个域名,除此之外的其它域名不能匹配到
3、通配符匹配
在nginx的server_name中,通配符表示任意字符,用“*”星号表示,使用通配符匹配时,只需主域相同,任意二级域名均可匹配到
如上面的例子,“aa.local.com”、“abc.local.com”等等,只要是二级域名,都可以匹配到
4、通配符结束匹配
使用规则和通配符匹配一样,区别在于,通配符的位置由主域名前面变成后面,先看下面举例
这种做法的效果是,必须使用“a”开头的二级域名,末尾换作任何域名格式,如“.com”、“.cn”“.net”等等,均可以匹配到
5、正则匹配
前面几种匹配规则比较简单,正则匹配需要简单了解正则表达式,以及nginx常用的正则规则,比如:
上面所举例子的效果是,区分大小写匹配一个由数字开头的二级域名,任意数字,至少一位,直到结尾。
注意,“~”符号在nginx中表示区分大小写匹配,要有“^”开始符号和“$”结束符号,域名中的所有“.”要使用反斜线“\”进行转义
有一点重要提示:有通配符前匹配时,正则匹配不生效
6、相同域名,访问不同目录
在同一台服务器上,相同的域名访问不同目录,可以通过设置端口来实现。
nginx在每个server段中,使用listen来表示所监听的端口,默认是80端口,可以通过设置不同的listen,实现相同域名访问不同目录,如下
上面例子中,两个server段域名同为“a.local.com”,但由于第一个使用“80”端口,第二是使用“8080”端口,所以达到了访问不同文件夹得目的
上一篇:Nginx基本配置文件简单解读
下一篇:Nginx反向代理基本理解