Regex nginx域正则表达式包含通配符
如何使用nginx拒绝所有子域(通配符解决方案)和主域之外的非法主机头?当使用下面的代码时,所有子域都停止工作Regex nginx域正则表达式包含通配符,regex,nginx,Regex,Nginx,如何使用nginx拒绝所有子域(通配符解决方案)和主域之外的非法主机头?当使用下面的代码时,所有子域都停止工作 if ($host !~* ^(domain.com|*.domain.com)$ ) { return 444; } 我的服务器名是: server_name domain.com *.domain.com; 如何做到这一点?看看这是否适合您: if ($host !~* ^(.+\.)?domain\.com$ ) { return 444; } 您需要转义句
if ($host !~* ^(domain.com|*.domain.com)$ ) {
return 444;
}
我的服务器名是:
server_name domain.com *.domain.com;
如何做到这一点?看看这是否适合您:
if ($host !~* ^(.+\.)?domain\.com$ ) {
return 444;
}
您需要转义句点,否则它们将被解释为“任意字符”。您还可以通过在“domain.com”之前匹配可选的子域前缀来简化正则表达式。看看这是否适合您:
if ($host !~* ^(.+\.)?domain\.com$ ) {
return 444;
}
您需要转义句点,否则它们将被解释为“任意字符”。您还可以通过在“domain.com”之前匹配可选的子域前缀来简化正则表达式。更简洁的解决方案是为“其他”服务器名称创建一个单独的(默认)
服务器
块:
server {
server_name .domain.com; # shorter form for "domain.com *.domain.com"
... # your main config here
}
server {
listen *:80 default_server;
server_name "";
return 444;
}
更简洁的解决方案是为“其他”服务器名称创建一个单独的(默认)
server
块:
server {
server_name .domain.com; # shorter form for "domain.com *.domain.com"
... # your main config here
}
server {
listen *:80 default_server;
server_name "";
return 444;
}
^
表示“字符串的开头”^domain.com
将不匹配foo.domain.com
,因为domain.com
不在字符串的开头<代码>|*。也将不起作用*
是“前面的零个或多个”,但您没有前面的|
不是匹配字符,它是与“or”等价的正则表达式。^
表示“字符串的开始”^domain.com
将不匹配foo.domain.com
,因为domain.com
不在字符串的开头<代码>|*。也将不起作用*
是“前面的零个或多个”,但您没有前面的|
不是匹配字符,它是与“or”等价的正则表达式。