只允许域名访问,禁止ip方式访问

方法一:直接40X

判断host是否是www.xxx.cn,不是的话直接403

server{

listen 80;
server_name www.xxx.cn ;

#server_name localhost;
if ($host != 'www.xxx.cn'){

    return 403;
    }


直接无法访问,显示403,非常OK。

方法二:给我跳回来

这个方法无非就是当使用IP访问时,还是跳回自己的域名,还能作为影(引)流之主,具体形式如下。

server{

listen 80;
server_name www.xxx.cn ;
}

.....
.....
server {
listen 80 default_server;
server_name _;
rewrite ^(.*) http://www.xxx.cn permanent;
}

可以从上图看到直接IP访问时先301再跳转到www.xxx.cn。

方法三:直接返回值

当IP访问时直接返回500,也不用判断host。(可把400改成404或502等错误码)

server
{

listen 80 default_server;
server_name _;
return 500;

}

也可以是这样,注意观察与上面有何不同哦。

server {

listen 80 default;
server_name "";
return  500;

}

在这里,我们设置的主机名为字符串以匹配未定义的“host”头的请求,并且返回了一个nginx特有的,并且返回500,nginx从0.8版本之后,这已成为主机名默认的设置,所以可以省略“sever_name”,可简化为下面形式。

server {

listen   80;
return   500;

}

发表新评论