nginx访问控制的两种方法
环境
系统环境:CentOS6.7
nginx version: nginx/1.8.1
一、基于Basic Auth认证
Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后才能正确的访问网站。
我们使用htpasswd来生成密码信息,首先要安装httpd-tools,在httpd-tools中包含了htpasswd命令。
yum install -y httpd-tools
接下来我们就可以创建用户和密码了,例如创建一个loya的用户,执行命令:
htpasswd -c /opt/nginx/.htpasswd loya
按照提示输入两次密码之后就创建成功了,然后再修改Nginx的配置,编辑/opt/nginx/conf/vhosts/www.conf,在配置后面添加两行配置:
server { .... auth_basic "Restricted"; auth_basic_user_file /opt/nginx/.htpasswd; }
reload nginx后生效
/opt/nginx/sbin/nginx -s reload
二、基于IP的访问控制
通过IP进行访问控制基于nginx模块ngx_http_access_module,
1.模块安装
nginx中内置ngx_http_access_module,除非编译安装时指定了–without-http_access_module,当然一般没人这么干吧。
2.指令
allow
语法: allow address | CIDR | unix: | all;
默认值: -
配置段: http, server, location, limit_except
允许某个ip或者一个ip段访问。如果指定unix:,那将允许socket的访问,unix在1.5.1才新加入。
deny
语法: deny address | CIDR | unix: | all;
默认值: -
配置段: http, server, location, limit_except
禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问,unix在1.5.1才新加入。
3.示例
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; }
从上到下的顺序,类似iptables。匹配到了便跳出。如上的例子先禁止了192.16.1.1,接下来允许了3个网段,其中包含了一个ipv6,最后未匹配的IP全部禁止访问.
被deny的将返回403状态码。
总结
以上就是关于nginx访问控制的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。谢谢大家对我们的支持。
相关推荐
-
Nginx中禁止使用IP访问网站的配置实例
国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 如下的配置项,可以设置允许使用I
-
nginx与apache限制ip并发访问 限制ip连接的设置方法
nginx nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量 1.添加limit_zone 这个变量只能在http使用 vi /usr/local/nginx/conf/nginx.conf limit_zone one $binary_remote_addr 10m; 2.添加limit_conn 这个变量可以在http, server, location使用 我只限制一个站点,所以添加到server里面 vi /usr/local/nginx/conf/host/gaoji
-
nginx禁止某个IP访问站点的设置方法
首先建立下面的配置文件放在nginx的conf目录下面,命名为blocksip.conf: deny 95.105.25.181; 保存一下. 在nginx的配置文件nginx.conf中加入:include blocksip.conf; 重启一下nginx的服务:/usr/local/nginx/sbin/nginx -s reload 就可以生效了. blocksip.conf:的格式还有许多种,可以配置只允许的IP访问或者IP段访问: deny IP; allow IP; # block
-
禁止IP访问网站的多种方法分享(linux,php,nginx,apache)
PHP禁止某个IP或IP段访问 废话不多说,客官请看: <? //禁止某个IP $banned_ip = array ( "127.0.0.1", //"119.6.20.66", "192.168.1.4" ); if ( in_array( getenv("REMOTE_ADDR"), $banned_ip ) ) { die ("您的IP禁止访问!"); } //禁止某个IP段 $ban_ran
-
Nginx 禁止访问某个目录或文件的设置方法
复制代码 代码如下: location = /config/ { return 404; } location =/config.ini{ return 404; } 这样只能禁止访问 http://www.jb51.net/path/ 复制代码 代码如下: location = /path/ { return 404; } 禁止访问 http://www.jb51.net/path/test.php 复制代码 代码如下: location ^~ /test { deny all; } 可能te
-
Nginx服务器限制IP访问的各种情况全解析
限制某个IP同一时间段的访问次数 如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候.其中CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向向受害主机不停地发大量数据包, 造成对方服务器资源耗尽,一直到宕机崩溃. cc攻击一般就是使用有限的ip数对服务器频繁发送数据来达到攻击的目的,nginx可以通过HttpLimitReqModul和HttpLimitZo
-
nginx访问控制的两种方法
环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 一.基于Basic Auth认证 Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后才能正确的访问网站. 我们使用htpasswd来生成密码信息,首先要安装httpd-tools,在httpd-tools中包含了htpasswd命令. yum install -y httpd-tools 接下来我们就可以创建用户和密码了,例如创建一个loya的用
-
nginx 让users有权限启动的两种方法
nginx 让users有权限启动两种方法 普通用户在restart和reload nginx时,会报错: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /opt/nginx/conf/nginx.conf:1 我又不能给开发人员root权限,没办法,只好这么做. 原因是:默认情况下Linux的1024以下端口是只有root用
-
php有效防止图片盗用、盗链的两种方法
如今的互联网,采集网站非常多,很多网站都喜欢盗链/盗用别人网站的图片,这样不仅侵犯网权,还导致被盗链的网站消耗大量的流量,给服务器造成比较大的压力,本文章向大家介绍php如何防止图片盗用/盗链的两种方法,需要的朋友可以参考一下. 图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量. 本文章向大家介绍php防止图片盗用/盗链的两种方法 1.Apache图片重定向方法 2.设置images目录不充许http访问 Apache服务器下防止图片盗链的办法 如果你的网站以图片为主,哪天发现月
-
K8s创建资源的两种方法实例
目录 前言 kubectl run kubectl kubectl create/apply kubectl create 与 kubectl apply create apply 总结 前言 在 K8s 中,创建资源有两种方式: 直接使用 kubectl run 命令创建 使用 kubectl create/apply 命令从 YAML 文件创建 在本文中,我将通过示例解释这两种方法,以及它们分别应该在何时使用. kubectl run kubectl run 命令在 pod 中创建并运行特定
-
从docker镜像里提取dockerfile的两种方法
目录 前言 从镜像中提取dockerfile的两种方法 1.history参数 2.dfimage 补充:如何设置永久的别名 总结 前言 hello,大家好,今天在玩docker的时候发现了很好用的东西,他就是用来提取镜像中的dockerfile的.这个是前者留下来的镜像,但是dockerfile被删除了,现在想知道dockerfile里面是如何写的,然后去查了查就有了新的发现——通过镜像来提取dockerfile,接下来我就把方法分享给大家 从镜像中提取dockerfile的两种方法 1.hi
-
docker已启动容器修改添加端口映射的两种方法
目录 简述 一.先提交,在配置 1.先将容器提交为镜像 2.创建新的容器并运行 二. 修改配置文件 1.关闭docker服务 2.修改hostconfig.json 3.修改config.v2.json 4.重启 docker服务 5.查看配置项已经修改成功 补充:docker容器怎么开端口 总结 简述 正常情况下,在你创建容器时可以添加多个端口映射,写法如下 每个端口映射都加一个-p docker run -itd --name centos -p 4000:8081 -p 3306:3306
-
mysql 5.7.20解压版安装方法步骤详解(两种方法)
我来讲解下window64位下MySQL的安装,MySQL是在5.7开始安装版就只有32位下载服务了,这里我讲解解压版的MySQL如何安装,在安装MySQL解压版时对于新手的小编来说也是头疼得很,各种问题各种来没有安装版的一键轻松搞定的方便,安装时需要注意三点:1.路径配置,2.安装时MySQL端口被占用这时需要关闭被占用端口,3.cmd必须是在管理员环境下设置MySQL信息. MySQL官网: https://www.mysql.com/downloads/ http://www.jb51.n
-
Flex 输出文件到本地的两种方法
在flex中输出文件到本地目前我用到两种方法,分别是File和FielRefreence 例子: var exportString:String = "这就是一个测试" 1.File输出 复制代码 代码如下: var ff:File = File.desktopDirectory.resolvePath("Progress.CSV"); ff.addEventListener(Event.SELECT,exportCSVSelectedHandler); ff.br
-
sql server2008数据库迁移的两种方法
sql server2008数据库迁移的两种方法,具体内容如下 方案一 1.先将源服务器上的数据库文件打包(包括mdf和ldf文件),并且复制到目标服务器上. 2.解压,然后在目标服务器上附加数据库 总结:适合数据库巨大(50GB以上),需要快速迁移数据,并且移动硬盘空间足够大. 方案二:先备份后还原 1.备份 数据库对象右键\任务\备份 注意,如果数据库文件较大的话,最好选择'压缩备份' 2.还原 将备份文件copy到目标服务器上,然后还原数据库. 总结:适合数据库中小型(否则备份的时间比较长
-
Ajax中解析Json的两种方法对比分析
eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name":"周星驰","age":23 }' var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法 var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方
随机推荐
- 作为老司机使用 React 总结的 11 个经验教训
- 支持IE,firefxo,chrome浏览器下鼠标拖动和拖拽的鼠标指针特效
- js+css实现增加表单可用性之提示文字
- Windows下使用批处理实现启动关闭mysql
- IOS开发中禁止NavigationController的向右滑动返回
- Orcale 数据库客户端PL/SQL 中文乱码的问题解决方法
- javascript中的prototype属性使用说明(函数功能扩展)
- node.js中的path.isAbsolute方法使用说明
- 从父页面读取和操作iframe中内容方法
- XStream使用方法总结附实例代码
- Java反射之类的实例对象的三种表示方式总结
- 在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决思路详解
- 来谈谈搜索引擎优化策略
- Android基于ViewPager实现的应用欢迎界面完整实例
- QQ修改技术讨论,打造自己个性QQ
- CentOS 7.3.1611编译安装Nginx1.10.3+MySQL5.7.16+PHP7.1.2
- python时间序列按频率生成日期的方法
- 寻找易语言外形框
- JS实现从对象获取对象中单个键值的方法示例
- vuejs移动端实现div拖拽移动