域名的泛域名解析
nginx可以直接做泛域名解析
直接设置serever中的server_name
server {
listen 80;
server_name *.edu.qumogu.com
location / {
root /data/www/test/;
index index index.html;
}任何一个aaa.test.domain.com都可以访问
需要使用nginx的正则
需要使用nginx的判断if
# 示例一
if ($host !~* "^[a-zA-Z0-9_]{3,10}\.test\.domain\.com$") {
return 444;
}
# 示例二
if ($host ~* ^newhouse\.(.+)?\.house365\.com) {
set $host_city $1;
rewrite ^(.*)$ http://$host_city.house365.com$1 permanent;
}需要使用nginx的变量,例如,下面的泛域名解析
server_name ~^(?<subdomain>.+)\.test\.domain\.com$;
if ($subdomain !~* "^[a-zA-Z0-9]{3,10}$") {
return 444;
}需要使用nginx的return
不设置severname 直接判断$host
server {
listen 80;
if ($host !~* "^[a-zA-Z0-9_]{3,10}\.test\.domain\.com$") {
return 444;
}
location / {
root /data/www/test/;
index index index.html;
}
}设置server_name取出变化的部分,再判断
server {
listen 80;
server_name ~^(?<subdomain>.+)\.test\.domain\.com$;
if ($subdomain !~* "^[a-zA-Z0-9]{3,10}$") {
return 444;
}
location / {
root /data/www/test/;
index index index.html;
}
}字符长度判断{n,m} 需要给整个规则加上""
实现1的时候,因为没有看过网上有加双引号的案例,所以不敢加 $host !~* ^[a-zA-Z0-9_]{3,10}\.test\.domain\.com$ 一直报错,一度怀疑nginx是否支持长度的判断在severname中一直无法,实现直接判断长度,所以才有2的变种实现
server_name ~ "^[a-zA-Z0-9_]{3,6}\.test\.domain\.com$";一直报server_name不是以;为结束的错误