Nginx禁止通过IP访问,防止被恶意域名指向

前段时间,一客户的IP被恶意域名指向,导致IP地址被封,其原因可能是竞争对手恶意指向,再者,也不排除无意白痴或者恶作剧。

IP被封,但又有业务在跑,你说肿么办?其实这件事情发生了一两个月了。一直忙,没时间记录下来。域名被恶意指向了。

首先,可以要求服务商赶紧申请解封IP,其次,可以要求服务器分配个新的IP地址先顶着业务。最后,还是要吸取经验教训。这问题是可以自己避免的。

不管你使用的是IIS,Apache,亦或者是现在主流,性能高的Nginx等等WEB服务器。它们都可以配置成防止被恶意域名指向。这里,不谈就虚拟主机。一台服务器上放置成千上万的web站。当然,虚拟主机是必须的。

不然。。。。你随便购买个域名,使用服务商的虚拟主机,都可以给你随便指向。那么它们就不可能成千上万了。

好吧,不多说,看看被恶意域名指向后,Nginx下的解决方法吧:服务器入门的时候,Windows 微软大师中的IIS Server就教过你什么叫做主机头。

主机头值又是什么,当然。这些是概念性的东西。主机头值正是解决这个问题的核心。有了主机头值,域名便不能随便网指向了,具体可以查阅相关资料。

其实 Nginx下禁用浏览器通过IP地址访问WEB站点的配置真的简单。同时,也方便叫为是虚拟主机的设置。只是禁用了 IP地址访问哈。

先来看Nginx安装后默认的配置:

server {listen 80;server_name localhost;...}

上面的意思是 listen 80端口。name为localhost,但我们知道 127.0.0.1--->localhost--->your ip。

所以,反过来也这样,就是通过你的WEB服务器的IP地址可以指向至localhost。

因此,Nginx就会匹配通过 your ip 来的http请求,如果Nginx配置无错,就会正常响应请求了并返回数据---->通过IP地址访问Nginx成功。

所以,问题就出在这里。我们可以灵活地控制Nginx服务器的server_name写法。解决方法如下:

server {listen 80 default;server_name _;return 403;....}

上面,通过域名 abc.com正确解析指向 your ip 。

那么服务器本身便可以知道abc.com--->your ip。也就是说,上面 server_name 准确不通过域名的写法是 server_name your ip;。return 403; 这个你喜欢啦。

还可以自定义哦亲。来看下效果吧:

http 403 error code

domain abc

 

domain wwwabc

test net

大概就是这样了。不能作更多解析哈。对于有友好界面互交的IIS设置就不说了。Apache也可以设置。记住 主机头值。。

相关阅读RelatedRead

Wordpress启用HTTPS需要注意的事

阅读、理解、执行

Ubuntu 14.04允许root直接ssh远程服务器

Nginx编译安装之自定义google_perftools not found

Nginx1.4.7已经发布,Nginx1.4.6平滑升级

Linux下编译安装OpenSSL

今天是什么好日子

7 条评论添加评论

首先禁止泛域名解析最好

回复取消回复
@飞絮落叶雪

嗯。那是。请问该如何实现呢?

回复取消回复
@飞絮落叶雪

刚刚查了资料,这种配置方法就已经是禁止泛域名解析了。就是说,为设置绑定的域名是不可以访问,返回值也是403.如果需要使绑定了的域名可以使用泛解析。可以配置server段 *.abc.com即可。

回复取消回复
@飞絮落叶雪

小东西大功能,这东西基本配置还是挺简单的,就是实现其它功能也挺复杂。

回复取消回复