基于IP的访问控制:http_access_module

不允许指定网段的用户访问:
配置语法:deny address | CIDR | unix: | all;
默认状态:-
配置方法:http、server、location、limit_except

把最原始的配置文件做好备份,并复制一份在这里,命名为:access_mod.cof

检查语法并重载
nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf

访问到之前放在里面的页面,说明配置成功

要参与测试的ip:

复制一个location进行配置

检查语法并重载

访问

换虚拟机访问

只允许指定网段的用户可以访问:
配置语法:allow address | CIDR | unix: | all;
默认状态:-
配置方法:http、server、location、limit_except

复制一个location进行配置

检查配置是否成功,并重载

设置的ip访问成功

未设置的ip访问失败

http_access_module的局限性:

由于此实现的原理是基于客户端的ip来控制,但是nginx并不知道哪一个ip是真正的客户的,如果客户端与服务端的nginx之间还有一层代理(如其他的中间件),如对下图的中对IP1访问IP3做控制,此时IP1经过中间件后,放IP3发送的请求为IP2,即控制失败,所以只能通过$remote_addr控制允许访问,不能控制拒绝访问

解决办法:

方法一:采用别的HTTP头信息控制访问,如:HTTP_X_FORWARD_FOR

方法二:结合geo模块作

方法三:通过HTTP自定义变量传递(推荐此方法)

http_x_forwarded_for:

http_x_forwarded_for是http头信息协议规定要携带的内容,在IP2上面看到的是IP1的http_x_forwarded_for信息,在IP3上看到的是IP1,IP2的http_x_forwarded_for信息,所以http_x_forwarded_for可以看到通过所有代理的信 

配置语法:http_x_forwarded_for=Client IP ,Proxy(1),Proxy(2)IP,...

基于用户的信任登录:http_auth_basic_module

配置语法:auth_basic string | off;
string:即表示开启,有会在前端显示这个字符串的信息,有也可以作为前端的登录提示
默认状态:auth_basic off;
配置方法:http、server、location、limit_except

配置语法:auth_basic_user_file filePath;
filePath:用来存储用户认证信息的文件
默认状态:-;
配置方法:http、server、location、limit_except

官方文档:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

如果没有的话需安装,我这里已经安装了

做好备份,并把配置文件命名为auth_mod.conf

在上一级目录,用htpasswd命令生成一个名为./auth_conf的文件,并写入一个用户名和密码,我这里设置的是admin,密码111111

开始配置

检查语法并重载

访问,需输入用户名密码

http_auth_basic_module 的局限性

一:用户信息依赖文件方式

二:操作机械,效率低下

解决方案:

一:Nginx结合LUA实现高效验证

二:Nginx和LDAP打通,利用nginx-auth-ldap模块

Nginx详解九:Nginx基础篇之Nginx的访问控制的更多相关文章

  1. 详解递归(基础篇)———函数栈、阶乘、Fibonacci数列

    一.递归的基本概念 递归函数:在定义的时候,自己调用了自己的函数. 注意:递归函数定义的时候一定要明确结束这个函数的条件! 二.函数栈 栈:一种数据结构,它仅允许栈顶进,栈顶出,先进后出,后进先出.我 ...

  2. Web服务器之Nginx详解(理论部分)

    大纲 一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web 服务请求过程 五.Linux I/O 模型 六.Linux I/O 模型具体说明 七.Linux I/O ...

  3. 【转】Web服务器之Nginx详解(理论部分)

    大纲 一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web 服务请求过程 五.Linux I/O 模型 六.Linux I/O 模型具体说明 七.Linux I/O ...

  4. (转)windows 下安装配置 Nginx 详解

    windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...

  5. 详解如何在CentOS7中使用Nginx和PHP7-FPM安装Nextcloud

    转载地址:https://www.jb51.net/article/109382.htm 这篇文章主要介绍了详解如何在CentOS7中使用Nginx和PHP7-FPM安装Nextcloud,会通过 N ...

  6. 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离

    技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...

  7. JAVASCRIPT事件详解-------原生事件基础....

    javaScirpt事件详解-原生事件基础(一)   事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能 ...

  8. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

  9. 磁盘分区对齐详解与配置 – Linux篇

    在之前一篇<磁盘分区对齐详解与配置 – Windows篇>中,我介绍了磁盘分区对齐的作用和适用于MBR和GPT的两种磁盘类型的配置,以及Windows平台设置磁盘分区对齐的方法. 本文作为 ...

随机推荐

  1. kotlin中“==”和“===”的区别

    code 1 fun main(args: Array<String>) { val a : Int = 1000 println(a == a) //true println(a === ...

  2. I - Magic FZU - 2280 (字符串hash)

    题目链接: I - Magic FZU - 2280 学习链接: FZU - 2280 I - Magic 题目大意: 给你nn个字符串,每个字符串有一个值ww,有qq次询问,一共两种操作:一是“1, ...

  3. C - CodeCoder vs TopForces Gym - 101142C (连通块+思维)

    题目链接: C - CodeCoder vs TopForces Gym - 101142C 题目大意:给你n个人的信息,每一个人的信息包括两个.t1和t2.A>B的前提是A的t1和t2至少有一 ...

  4. mysql 查询优化 ~ select count 知多少

    一 简介:今天咱们来聊聊mysql的查询总数 二 具体介绍 1 从引擎层面说 myisam  myisam的扫描总行数是非常快的,这是因为myisam会将表的总行数存储起来,定期维护,但是注意,一旦加 ...

  5. 转:MVC,MVP 和 MVVM 的图示

    MVC,MVP 和 MVVM 的图示 - 阮一峰的网络日志http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html 作者: 阮一峰 日期: 201 ...

  6. Microsoft SQL - 查询与更新

    查询与更新(Query & Update) 转义引号 SQL语句中字符串只能使用单引号,如果需要转义,可用单引号转义单引号. 查询(Inquire) 以下公式中的c指代列名. 规则 1.查询语 ...

  7. Elasticsearch 5.4.3实战--Java API调用:搜索建议

    通常的搜索引擎,都会根据用户的输入,实时给予匹配的提示. 那么这个功能在elasticsearch中如何实现呢? Elasticsearch里设计了4种类别的Suggester,分别是: Term S ...

  8. (转载)ECCV 2018:IBN-Net:打开域适应的新方式

    (本文转自极视角) 本文由香港中文大学发表于ECCV2018,论文探索了IN和BN的优劣,据此提出的IBN-Net在语义分割的域适应任务上取得了十分显著的性能提升. 论文地址:https://arxi ...

  9. python练习实例

    #!/usr/bin/python # -*- coding: UTF-8 -*- try: fh = open("testfile","w") fh.writ ...

  10. 其他-n个互相独立的连续随机变量中第i小的数值期望

    提出问题 有\(n\)个互相独立的\(0\)至\(1\)之间等概率生成的随机变量,求从小到大排序后第\(i\)个数的数值期望 一个简化的问题 我们先来求解一个简化的问题:最大值的数值期望是多少? 我们 ...