zoukankan      html  css  js  c++  java
  • nginx的访问控制

    一、基于Basic Auth认证与基于IP的访问控制

      一、基于Basic Auth认证

      Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后才能正确的访问网站。

      1、安装httpd-tools,用htpasswd来生成密码信息

      首先要安装httpd-tools,在httpd-tools中包含了htpasswd命令。

    yum install -y httpd-tools

      2、创建一个用户,然后基于这个用户通过htpasswd命令生成用户名及对应密码数据库文件

    #创建用户
    useradd webuser
    
    #创建密码管理目录
    mkdir -p /etc/nginx/auth/
    
    #创建密码
    # htpasswd -c /etc/nginx/auth/passwd.db webuser //创建认证信息,webuser 为认证用户名 
    New password: *******  //输入认证密码 web@user
    Re-type new password: ********  //再次输入认证密码 web@user
    Adding password for user webuser
    
    #修改网站认证数据库权限
    chmod 755 /etc/nginx/auth/passwd.db  
    
    #修改网站认证数据库属主和属组 
    chown root:root /etc/nginx/auth/passwd.db
    
    #查看通过htpasswd生成的密码为加密格式 
    #cat /etc/nginx/auth/passwd.db
    wyl:r5IXRXWSmlBk6

      2、编辑nginx的配置文件

    server {
         listen       80;
         server_name  localhost;
    
         client_max_body_size    151m;
    
       location / {
             auth_basic "s1";  #虚拟主机认证命名 
             auth_basic_user_file /etc/nginx/auth/passwd.db; #虚拟主机用户名密码认证数据库     
             proxy_pass http://10.0.0.10:8088;  #访问
       }
    }

      3、重启nginx

    nginx -s reload

      4、访问测试

      需要输入密码和账号,输入正确的用户名和密码之后,才可以访问相应的内容。

      二、基于IP的访问控制

      通过IP进行访问控制基于nginx模块ngx_http_access_module

      1、模块安装

      nginx中内置ngx_http_access_module,除非编译安装时指定了–without-http_access_module

      2、指令

        1、allow

      语法: allow address | CIDR | unix: | all;

      默认值: -

      配置段: http, server, location, limit_except

      允许某个ip或者一个ip段访问。如果指定unix:,那将允许socket的访问。

        2、deny

      语法:deny address | CIDR | unix: | all;

      默认值: -

      配置段: http, server, location, limit_except

      禁止某个ip或者一个ip段访问.如果指定unix:,那将禁止socket的访问

      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状态码。

  • 相关阅读:
    网络编程总结
    网络编程进阶---->>> hamc模块 socketserver模块验证合法性 两者进行通信连接
    黏包
    socket概念 套接字
    网络协议
    python之路——网络基础
    模块复习 staticmethod和classmethod的区别
    Dubbo执行流程?
    Dubbo在安全机制方面是如何解决的
    Dubbo中有哪些角色?
  • 原文地址:https://www.cnblogs.com/happy-king/p/9192067.html
Copyright © 2011-2022 走看看