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. JPA OpenJPA 简单例子

      JPA 全称,Java Persistence API,Java持久化API JPA是一套持久化标准,相当于JDBC标准,针对于此标准的实现目前有OpenJAP,TOPLINK,Hibernate等. ...

    2. GWT 中日期格式化 ,处置Date

      GWT的view中不能用java原生的DateFormat 必须使用gwt封装的格式化方法,方法如下 import com.google.gwt.i18n.client.DateTimeFormat; ...

    3. Java基础知识强化之IO流笔记67:Properties的特殊功能使用

      1. Properties的特殊功能 public Object setProperty(String key,String value):添加元素 public String getProperty ...

    4. mysql的数据导入导出

      1.Navicat for Mysql XML导出导入格式支持二进制数据:虽然同步数据人眼看不出区别,但是java尝试读取数据时,报datetime字段取出的值为“0000-00-00 00:00:0 ...

    5. 关于python使用list出现乱码的解决

      昨天在敲python的一个小实例的时候,用到了readlines()这个函数,但是将文件读出来的时候是乱码,也并不是完全乱码,只是中文出现了乱码,数字还是显示正常的,同时也不报错.源码以及文件截图如下 ...

    6. Redis集群

      一.Redis集群原理 集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应,我们必然想到的是将数据进行切片,把数据根据某种规 ...

    7. 【高级JEE技术】JMS

      ActiveMQ消息服务器. ActiveMQ是apache的一种jms标准实现,支持两种模型,点对点发送消息以及发布订阅者模型. 为了规范JMS API,JMS为消息传送定义了很多概念: JMS客户 ...

    8. scala学习笔记:无参函数

      scala> def repeat(times:Int)(run:()=>Unit)=for(i<-1 to times)run() repeat: (times: Int)(run ...

    9. Activiti源码浅析:Activity与Task

      最近由于接触到Activiti工作流引擎,因此粗读了一下它的源码. 总结了一些内容如下,这些内容一般的doc上都是没有提及的. 1. model.Activity与model.Task Activit ...

    10. 递归法绑定文件夹到导航树&在指定文件夹下新建文件夹

      protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString[&q ...