1.NGINX访问控制功能

nginx的访问控制有两种方式:

  • 基于ip进行限制,由ngx_http_access_module模块提供;
  • 对特定网页进行用户名密码认证,由ngx_http_auth_basic_module模块提供;

1.1 基于ip地址的访问控制

  • allow address | CIDR | unix: | all;

    允许访问指定的网络或地址,如果指定unix:,表示运行UNIX-domain所有套接字

    支持环境:http, server, location, limit_except

  • deny address | CIDR | unix: | all;

    允许访问指定的网络或地址

    支持环境:http, server, location, limit_except

匹配规则为:自上而下检查,一旦匹配,将生效,不再向下匹配所以条件严格的置前。

  • 场景一:只允许指定的来源IP访问/imags目录

    [root@nginx01 ~]# vim /etc/nginx/conf.d/virtualhost.conf
    server {
    listen 80;
    server_name www.nginx01.com; location / {
    root /data/nginx/html/web1;
    index index.html;
    }
    location /image {
    root /data/nginx/html/web1/
    allow 172.0.0.1;
    allow 192.168.20.0/24;
    deny all;
    }
    }
  • 场景二:禁止特定客户端IP访问/images目录,其他IP允许访问

    [root@nginx01 ~]# vim /etc/nginx/conf.d/virtualhost.conf
    server {
    listen 80;
    server_name www.nginx01.com; location / {
    root /data/nginx/html/web1;
    index index.html;
    }
    location /image {
    root /data/nginx/html/web1/
    deny 172.16.0.0/16;
    allow all;
    }
    }

1.2 基于用户名密码的认证

  • auth_basic string | off;

    启用使用“HTTP基本身份验证”协议验证用户名和密码,默认为off,string为提示信息。

    支持环境:http, server, location, limit_except

  • auth_basic_user_file file;

    指定以下列格式保存用户名和密码的文件进行验证

    支持环境:http, server, location, limit_except

  • 用户口令文件格式:

    明文文本:格式name:password:comment

    # comment

    name1:password1

    name2:password2:comment

    name3:password3

    加密文本:由htpasswd命令实现,命令由httpd-tools所提供。

  • htpasswd命令的用法如下:

    htpasswd [options] /PATH/HTTPD_PASSWD_FILE username

    选项

    -c 自动创建文件,仅首次时使用,再次使用会覆盖

    -p 明文密码

    -d CRYPT格式加密,默认

    -m md5格式加密

    -s sha格式加密

    D 删除指定用户

    -b:批模式添加用户,类似于passwd –stdin,多用于脚本。

  • 场景示例:为/login或/admin目录下的内容提供用户认证保护:

    #1.nginx的配置文件如下:
    [root@nginx01 ~]# vim /etc/nginx/conf.d/virtualhost.conf
    server {
    listen 80;
    server_name www.nginx01.com;
    charset utf-8,gbk; location / {
    root /data/nginx/html/web1;
    index index.html;
    } location ~* /(admin|login) {
    root /data/nginx/html/web1/;
    auth_basic "please login!"; <==提示信息
    auth_basic_user_file /etc/nginx/.nginxuser; <==密码文件
    }
    } #2.重启nginx服务
    [root@nginx01 web1]# systemctl reload nginx.service #3.建立admin,login相关目录
    [root@nginx01 ~]# cd /data/nginx/html/web1/
    [root@nginx01 web1]# mkdir admin
    [root@nginx01 web1]# mkdir login
    [root@nginx01 web1]# echo "admin area" > admin/index.html
    [root@nginx01 web1]# echo "login area" > login/index.html #4.使用htpasswd工具建立密码文件
    [root@nginx01 web1]# yum install httpd-tools -y #首次创建文件使用-c选项
    [root@nginx01 web1]# htpasswd -c -b /etc/nginx/.nginxuser user1 123456
    Adding password for user user1 [root@nginx01 web1]# htpasswd -b /etc/nginx/.nginxuser user2 123456
    Adding password for user user2 [root@nginx01 web1]# cat /etc/nginx/.nginxuser
    user1:$apr1$xTEjRg/g$6IbW.lOB0Y2vXGjpB9zL70
    user2:$apr1$Ukqm8pEa$2VgnSmA0sfkxdkuyusTxr. #5.客户端测试:
    #不输入用户密码会返回401
    [root@xuzhichao ~]# curl http://www.nginx01.com/admin
    <html>
    <head><title>401 Authorization Required</title></head>
    <body>
    <center><h1>401 Authorization Required</h1></center>
    <hr><center>nginx/1.20.1</center>
    </body>
    </html> #输入用户名密码可以正常访问
    [root@xuzhichao ~]# curl --user user1:123456 http://www.nginx01.com/admin/
    admin area

    客户端web测试:

WEB服务与NGINX(10)-NGINX访问控制功能的更多相关文章

  1. flask在centos下搭建web服务【uwsgi,nginx】

    centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...

  2. Web服务图片压缩,nginx+lua生成缩略图

    背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...

  3. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  4. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  5. 【docker专栏4】使用docker安装nginx提供web服务

    一般学习一项技术,会先用一个最简单的例子或最典型的例子来向大家讲解入门内容,所以此文为大家介绍使用docker安装nginx容器服务.从基础使用的角度来讲,此文几乎涵盖了docker最核心的内容:镜像 ...

  6. 框架5--nginx安装部署 上(web服务)

    目录 框架5--nginx安装部署(web服务) 1.练习 2.昨日问题 3.今日内容 4.什么是web服务 5.web服务器软件 6.部署Nginx 7.平滑增加Nginx模块 8.Nginx的命令 ...

  7. nginx(二)nginx的安装

    下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...

  8. linux web服务基础知识,dns

    #web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx   >   web  server  服务端浏览器  >    web  client  客户端 #dns解析 ...

  9. web服务的简单介绍及apache服务的安装

    一,web服务的作用:  是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览:   可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...

  10. web服务基础

    Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...

随机推荐

  1. Makefile 简单学习

    一.Makefile 简介 Makefile 是一种常用于编译的脚本语言.它可以更好更方便的管理你的项目的代码编译,节约编译时间(没改动的文件不编译).注意 Makefile 文件命令必须是 Make ...

  2. 【WCH以太网接口系列芯片】CH9121\20的使用和测试

    本篇文章将介绍沁恒微电子的以太网转接芯片CH9121(CH9120和CH9121使用上没有区别,注意配置工具不一样,可以在沁恒微电子官网自行下载测试),该芯片支持网口和串口相互透传,可以通过串口AT指 ...

  3. #主席树,fread,fwrite#洛谷 1972 [SDOI2009]HH的项链

    题目 分析 维护每个位置的后继,问题转换为后继在区间外的位置的个数, 但是这题太卡常了,所以我就加了fread和fwrite 其实树状数组的解法我也写过了 代码 #include <cstdio ...

  4. Avalonia的模板控件(Templated Controls)

    在Avalonia的UI框架中,TemplatedControl是一个核心组件,它提供了一种强大的方式来创建可重用且高度可定制的控件. 本文将深入探讨TemplatedControl的概念.其带来的优 ...

  5. mysql 重新整理——索引优化一个简单的案例 [十一]

    前言 经过了前面的一系列理论,那么用一个例子去看一下吧. 正文 EXPLAIN SELECT t3.emp_no,t3.first_name,(select t4.last_name from tem ...

  6. 【转】Java程序员常用工具类库 - 目录

    原文地址:http://rensanning.iteye.com/blog/1553076 有人说当你开始学习Java的时候,你就走上了一条不归路,在Java世界里,包罗万象,从J2SE,J2ME,J ...

  7. 本地部署Llama3-8B/72b 并进行逻辑推理测试

    美国当地时间4月18日,Meta开源了Llama3大模型,目前开源版本为8B和70B.Llama 3模型相比Llama 2具有重大飞跃,并在8B和70B参数尺度上建立了LLM模型的新技术.由于预训练和 ...

  8. 【笔记】go语言--函数式编程

    [笔记]go语言--函数式编程 简单来说,go语言的函数式编程体现的是一个闭包的情况 函数式编程 VS 函数指针 函数是一等公民:参数,变量,返回值都可以是函数 高阶函数 函数->闭包 &quo ...

  9. 力扣153(java&python)-寻找旋转排序数组中的最小值(中等)

    题目: 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以 ...

  10. CDN应用进阶 | 正确使用CDN 让你更好规避安全风险

    为了帮助用户更好地了解和使用CDN产品,CDN应用实践进阶系统课程开课了.12月17日,阿里云CDN产品专家彭飞在线分享了<正确使用CDN,让你更好规避安全风险>议题,内容主要包括以下几个 ...