如果我的配置看起来像
server {
listen 80;
server_name example.com;
}
我如何拒绝对 subdomain.example.com 的请求?
答案1
server {
listen 80;
server_name subdomain.example.com;
deny all;
}
或者,如果您想删除所有未发server
往配置中另一个块中明确定义的域的流量:
server {
listen 80 default_server;
server_name _;
deny all;
}
答案2
Shane Madden 的答案会起作用,或者您也可以使用非标准响应代码 444,它将终止连接而不发送任何标头(来源:http://wiki.nginx.org/HttpRewriteModule)
要阻止特定子域:
服务器 { 服务器名称子域名.example.com; 返回444; }
或者阻止所有子域名或未在其他地方处理的域名:
服务器 { 服务器名称 _; 返回444; }
后一种选项在阻止重复内容并可能损害您的搜索引擎排名的域名时很有用。(这来自个人经验。)
答案3
如果你的子域名有流量,最好将所有请求从子域名重定向到域,如下所示
if ($http_host != "example.com") {
rewrite ^ http://example.com$request_uri permanent;
}
在服务器部分
它对 SEO 很友好。
答案4
您可以像这样返回拒绝子域名的 404 http 代码
server {
listen 80;
server_name subdomain1.example.com subdomain2.example.com;
return 404;
}