1.确切的server_name匹配
server { listen 80; server_name www.luwen.cc luwen.cc; ... }
2.以*通配符开始的最长字符串
server { listen 80; server_name *.luwen.cc; ... }
3.以*通配符结束的最长字符串
server { listen 80; server_name www.*; ... }
这两条有两个特别要注意的事项:
通配符名字只可以在名字的起始处或结尾处包含一个星号,并且星号与其他字符之间用点分隔。所以,“www.*.luwen.cc”和“w*.luwen.cc”都是非法的。
4.匹配正则表达式
server { listen 80; server_name ~^(.+)-www.luwen.cc$; ... }
server_name指令一项很实用的功能便是可以在使用正则表达式的捕获功能.nginx使用的正则表达式兼容PCRE。为了使用正则表达式,虚拟主机名必须以波浪线“~”起始否则该名字会被认为是个确切的名字:
如上4
如果表达式含星号,则会被认为是个通配符名字(而且很可能是一个非法的通配符名字)。不要忘记设置“^”和“$”锚点,语法上它们不是必须的,但是逻辑上是的。同时需要注意的是,域 名中的点“.”需要用反斜线“”转义。含有“{”和“}”的正则表达式需要被引用,