zoukankan      html  css  js  c++  java
  • Nginx详解九:Nginx基础篇之Nginx的访问控制

    基于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模块

  • 相关阅读:
    LINUX系统 下载地址 LINUX镜像站 Centos ubuntu
    LINUX 操作命令大全
    THINKPHP3.2 配置Redis 使用 for windows
    THINKPHP3.2 中使用 soap 连接webservice 解决方案
    THINKPHP3.2+PHP5.3 配置MEMCACHE
    初学C#过程中的记录的一些认为以后有用的东西
    C#面向对象设计模式纵横谈:Builder
    C#面向对象设计模式纵横谈:Singleton
    pattern:Abstract Factory (创建型模式)模式笔记
    数据结构与算法
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/10493475.html
Copyright © 2011-2022 走看看