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. Gradle的安装与配置

      Gradle的下载地址:http://gradle.org/gradle-download/ Tips:要先安装JDK并配置其环境变量. 下载完成后将里面的文件解压出来,如下图所示: 添加一个名称为G ...

    2. Android 带进度的圆形进度条

      最近项目有个需求,做带进度从下到上的圆形进度条. 网上查了一下资料,发现这篇博客写得不错http://blog.csdn.net/xiaanming/article/details/10298163 ...

    3. qt 总结

      Qt中的每个类,都有一个对应的同名头文件,其中包含其类定义.例如要使用QApplication类,则需要在程序中添加" #include <QApplication>" ...

    4. php开启新的进程或者线程

      开启线程: $php_cli_path = '/usr/bin/php';$dir_path = dirname(__FILE__)."/".'CheckTaskState.she ...

    5. Support Facades

      Support Facades Introduction Facades provide a "static" interface to classes that are avai ...

    6. sysctl

      /proc/sys目录下存放着大多数内核参数,并且可以在系统运行时进行更改,不过重新启动机器就会失效./etc/sysctl.conf是一个允许改变正在运行中的Linux系统的接口,它包含一些TCP/ ...

    7. Linux下librdkafka客户端的编译运行

      Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

    8. 用grunt搭建自动化的web前端开发环境-完整教程

      原稿:http://www.cnblogs.com/wangfupeng1988/p/4561993.html#!comments jQuery在使用grunt,bootstrap在使用grunt,百 ...

    9. copy与deepcopy

      对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 对于字典.元祖.列表 而言,进行赋值.浅拷贝和深拷贝时,其内存地址的变化是不同的. 赋值,只是创建一个变量,该 ...

    10. 灯笼Lantern下载及使用教程

      http://www.iyaxi.com/2015-11-17/732.html 最新科学上网QQ群群号:465166189点击链接加入群[翻越长城三群]:http://jq.qq.com/?_wv= ...