用Nginx搭建WEB服务 只能通过域名 禁止使用ip访问

经常遇到过其他域名解析到自己的IP上,特别是不是全新的IP段上面解析的域名更多,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。在之前介绍过用Apache搭建的WEB服务器 如何设置只能通过域名访问 禁止使用ip访问的方法,今天说说Nginx搭建WEB服务。

在server的设置里面添加这一行:

listen 80 default;

后面的default参数表示这个是默认虚拟主机。

这个设置非常有用。

比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500。

网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:

  1. server {
  2. listen 80 default;
  3. return 500;
  4. }

也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:

  1. server {
  2. listen 80 default;
  3. rewrite ^(.*) http://www.laogeng.net permanent;
  4. }

按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问:

设置如下:

没更改之前,通过server_name 中的www.laogeng.net xxx.com均可访问服务器,加入禁止IP访问的设置后,通过xxx.com无法访问服务器了,www.laogeng.net可以访问

nginx -t 检测配置文件会提示warning:

最后通过在listen 80 default;后再加server_name _;解决,形式如下:

  1. #禁止IP访问
  2. server{
  3. listen 80 default;
  4. server_name _;
  5. return 500;
  6. }

或者

  1. server {
  2. listen 80 dufault;
  3. server_name _;
  4. rewrite ^(.*) http://www.laogeng.net permanent;
  5. }

这样,通过laogeng.net就能访问服务器了,问题解决了。

这个方法其实非常的简单,老耿也是看着之后感觉还不错,对于自己也是非常有所的,对于具体是谁首发不清楚,毕竟现在多数的教程都是一大堆的,有些需要自己去实践可行性,有些已经不适合了!

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注