Nginx上设置禁止通过IP访问服务器,只允许通过域名访问,以避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网。

nginx的默认虚拟主机允许用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效。

解决方法:
在server的设置里面添加这一行:

  1. 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.mydomain.com permanent;
  4. }

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

  1. server
  2. {
  3. listen       80;
  4. server_name www.abc.com  abc.com
  5. }

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

用 nginx -t 检测配置文件会提示warning:
[warn]: conflicting server name “abc.com” on 0.0.0.0:80, ignored
the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful
最后通过在listen 80 default;后再加server_name _;解决,形式如下:

  • #禁止IP访问
  • server
  • {
  • listen 80 default;
  • server_name _;
  • return 500;
  • }
  • 这样,通过abc.com就能访问服务器了,问题是解决了,但具体原因还是不清楚。

    本文转自:http://www.jbxue.com/article/4729.html

    设置nginx禁止通过IP访问服务器的方法的更多相关文章

    1. Nginx设置禁止通过IP访问服务器并且只能通过指定域名访问

      为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,需要在nginx上设置禁止通过IP访问服务器,只能通过域名访问. 最关键的一点是,在server的设置里面添加这么一行: liste ...

    2. Nginx禁止通过IP,未绑定域名访问服务器

      这几天查看CNZZ统计后台看到,我的IP被两个未知的域名绑定了,为了避免被天朝和谐掉, 可以在Nginx上设置禁止通过IP访问服务器,只能通过绑定域名访问(同时设置未绑定域名返回500错误或者跳转到我 ...

    3. 设置nginx禁止IP直接访问,只能通过指定的域名访问

      nginx的版本是1.2.1. 设置配置文件disableip.conf: server {     listen 80;     server_name _;     return500; } 这是 ...

    4. Linux 防火墙设置,禁止某个ip访问

      service  iptables  status        查看防火墙状态 service  iptables  start           开启防火墙 service  iptables  ...

    5. Nginx禁止使用IP访问

      在nginx的访问日志中,会出现只显示IP,而不出现域名的情况,在经过尝试之后,是因为没有设置禁止IP访问导致的. 下面就是在配置文件中设置禁止IP访问,来实现日志文件中$host显示域名. vim ...

    6. Nginx禁止使用ip访问,只允许使用域名访问

      Nginx虚拟主机配置,vhosts下面有很多域名的配置: [root@external-lb01 vhosts]# pwd/data/nginx/conf/vhosts [root@external ...

    7. nginx 禁止某IP访问

      首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: deny 95.105.25.181; 保存一下. 在nginx的配置文件nginx.conf中加入:inc ...

    8. 外网无法ip访问服务器解决方法 (原)

      示例ip:119.75.1.1      windows server示例 一.检查网络是否通畅     打开dos窗口(windows+r , 输入cmd回车  )输入命令: ping 119.75 ...

    9. Nginx禁止ip访问或IP网段访问方法

      Nginx禁止ip访问可以防止指定IP访问我们的网站,本例子可以实现是防止单IP访问或IP网段访问了,非常的有用我们一起来看看吧. 常用的linux做法 iptables参考规则  代码如下 复制代码 ...

    随机推荐

    1. NDK设置C++编译器版本号

      背景及问题: 小僧在使用VS2010写C++写Cocos2d-x  2.2.1的版本号的时候不小心使用了C++11的语法,怎料移植android版本号的时候编译失败(编译环境:ADT+NDK),例如以 ...

    2. android130 android启动

      Android的编译环境只支持Linux和Mac OS,google推荐使用64位操作系统, ### android启动 > #### 当引导程序启动Linux内核后,会加载各种驱动和数据结构, ...

    3. STL——空间的配置和释放std::alloc(第一级配置器和第二级配置器)

      1 空间的配置和释放,std::alloc 对象构造前的空间配置和对象析构后的空间释放,由<stl_alloc.h>负责,SGI对此的设计哲学如下: 向system heap要求空间 考虑 ...

    4. linux下修改环境变量

      把/etc/apache/bin目录添加到PATH中,方法有三: 1.#PATH=$PATH:/etc/apache/bin 使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH ...

    5. 在Objective-C声明Block的几种方式

      1.作为局部变量 returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...}; 2.作为类的属性 @property ...

    6. ios快捷键

      分屏:cmd + option + return 退出分屏:cmd + return cmd + option + [ 代码上跳 cmd + [ 代码左移

    7. spring-boot + Ehcache without XML

      http://stackoverflow.com/questions/21944202/using-ehcache-in-spring-4-without-xml 1.Ehcache配置类 @Conf ...

    8. Spring-boot访问MongoDB

      1.访问配置信息 package hello; import org.springframework.context.annotation.Bean; import org.springframewo ...

    9. Flume简介与使用(二)——Thrift Source采集数据

      Flume简介与使用(二)——Thrift Source采集数据 继上一篇安装Flume后,本篇将介绍如何使用Thrift Source采集数据. Thrift是Google开发的用于跨语言RPC通信 ...

    10. 我的第二篇--nginx安装问题之路径问题

      这几天还是一直在搭建nginx,并且要在nginx的基础之上配置naxsi(WAF防火墙)并使它生效,但是随之而来的问题也会有很多,也许因为我是个新手,所以遇到的问题要多,不解的问题也要很多,不知道又 ...