除了所有子域(通配符解决方案)和使用nginx的主域外,如何拒绝非法主机头?在下面使用此代码时,所有子域都将停止工作。
if ($host !~* ^(domain.com|*.domain.com)$ ) {
return 444;
}
我的服务器名称是:
server_name domain.com *.domain.com;
如何实现这一目标?
答案 0 :(得分:1)
看看这是否适合你:
if ($host !~* ^(.+\.)?domain\.com$ ) {
return 444;
}
您需要逃避期间,否则它们将被解释为“任何角色”。您还可以通过匹配“domain.com”之前的可选子域前缀来简化正则表达式。
答案 1 :(得分:1)
更清洁的解决方案是为“其他”服务器名称创建一个单独的(默认)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;
}