一 用户认证

 某些网页只希望给特定的用户访问,可以设置用户认证,使用户访问时需要进行身份认证,只有认证通过才可访问网页

location / {
root html;
index index.html index.htm;
auth_basic "haha";                    #服务器描述信息
auth_basic_user_file /usr/local/nginx/passwd.db;  #存放用户和密码的文件
}
#下载命令
[root@localhost ~]# yum provides htpasswd
[root@localhost ~]# yum -y install httpd-tools-2.4.6-95.el7.centos.x86_64

#设置用户及密码
[root@localhost ~]# htpasswd -c /usr/local/nginx/passwd.db user1
New password:
Re-type new password:
Adding password for user user1

二 访问控制

 作用同用户认证,对访问的客户端进行限制,可与用户认证一起使用

location / {
root html;
index index.html index.htm;
allow 192.168.10.0/24;    #允许192.168.10网段的访问,可写固定ip(做实验先拒绝198网段访问)
deny all;            #拒绝所有用户访问,优先级从上至下
}
nginx -s reload

三 限速

 nginx限速可以通过 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块来实现限速的功能

 1 ngx_http_limit_conn_module 主要限制下载速度

  并发连接限制

http
{
...
limit_conn_zone $binary_remote_addr zone=aming:10m; #定义一个内存区块索引aming,大小为10m,它以$binary_remote_addr作为key
...
server
{
...
limit_conn aming 10;                 #定义针对aming这个zone,并发连接为10个(单个IP的并发最多为10个)
...
}
}

  速度限制

location / {
root html;
index index.html index.htm;
limit_rate_after 512k; #当文件下载到指定大小之后开始限速(以下两个参数对每个请求限制)
limit_rate 150k; #限制下载速度为150k
}

 2 ngx_http_limit_req_module 主要限制请求数

  limit_req_zone

语法: limit_req_zone $variable zone=name:size rate=rate;
默认值: none
配置段: http 设置一块共享内存限制域用来保存键值的状态参数。 特别是保存了当前超出请求的数量
键的值就是指定的变量(空值不会被计算)
如limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 说明:区域名称为one,大小为10m,平均处理的请求频率不能超过每秒一次,键值是客户端IP
使用$binary_remote_addr变量, 可以将每条状态记录的大小减少到64个字节,这样1M的内存可以保存大约1万6千个64字节的记录
如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503 (Service Temporarily Unavailable)错误
速度可以设置为每秒处理请求数和每分钟处理请求数,其值必须是整数
即如果需要指定每秒处理少于1个的请求,2秒处理一个请求,可以使用 “30r/m”

  limit_req

语法: limit_req zone=name [burst=number] [nodelay];
默认值: —
配置段: http, server, location 设置对应的共享内存限制域和允许被处理的最大请求数阈值
如果请求的频率超过了限制域配置的值,请求处理会被延迟,所以所有的请求都是以定义的频率被处理的
超过频率限制的请求会被延迟,直到被延迟的请求数超过了定义的阈值
这时,这个请求会被终止,并返回503 (Service Temporarily Unavailable) 错误 这个阈值的默认值为0。如:
limit_req_zone $binary_remote_addr zone=aming:10m rate=1r/s;
server {
location / {
limit_req zone=aming burst=5;
}
} 限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个 如果不希望超过的请求被延迟,可以用nodelay参数,如: limit_req zone=aming burst=5 nodelay;

 3 设置白名单

  如果是针对公司内部IP或者lo(127.0.0.1)不进行限速,需要用到geo模块

  例:把127.0.0.1和192.168.198.0/24网段设置为白名单

http {
geo $limited {
default 1;
127.0.0.1/32 0;
192.168.100.0/24 0;
} map $limited $limit {
1 $binary_remote_addr;
0 "";
} limit_req_zone $limit zone=aming:10m rate=1r/s; server {
location / {
limit_req zone=aming burst=5;
}
}
}

四 状态访问

 主要用于对服务器的监控,通过访问这个网页得知nginx的连接的相关信息,可设置只允许管理员访问

location = /status {
stub_status on;
access_log off;
     allow 127.0.0.1;
     deny all;
}
Active connections: 2         #活动连接数
server accepts handled requests   #总共连接数 成功创建n次握手(相等表示中间没有失败) 处理了n个请求
13 13 20
Reading: 0 Writing: 1 Waiting: 1   #读取到客户端的Header信息数 返回给客户端的Header信息数
                      #Waiting:开启keep-alive的情况下,这个值等于active - (reading + writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接

Nginx--用户认证&&访问控制&&限速&&状态访问的更多相关文章

  1. Linux centosVMware Nginx安装、 默认虚拟主机、Nginx用户认证、Nginx域名重定向

    一. Nginx安装 cd /usr/local/src wget http://nginx.org/download/nginx-1.12.1.tar.gz 版本在http://nginx.org/ ...

  2. nginx用户认证与htpasswd命令

    最近在搭建ELK,然后ELK的kibana界面想添加一个访问限制,看到kibana有个插件x-pack,本来想用用,发现是收费的,就放弃了,然后就想着想配置下nginx的认证访问来实现简单的访问登陆. ...

  3. nginx的安装 、Nginx默认虚拟主机、nginx用户认证、nginx 域名重定向

    1.nginx:官网:www.nginx.org 下载:wget -c  http://nginx.org/download/nginx-1.14.0.tar.gz解压:tar -zxvf nginx ...

  4. Nginx安装、默认虚拟主机、Nginx用户认证和域名重定向

    6月7日任务 12.6 Nginx安装12.7 默认虚拟主机12.8 Nginx用户认证12.9 Nginx域名重定向 扩展nginx.conf 配置详解 http://www.ha97.com/51 ...

  5. Nginx 用户认证

    访问一些比较私密的页面 ( 如管理后台,数据后台 ) 时,我们就可以设置访问该页面时需要使用用户名和密码进行验证,这就是用户认证 [root@localhost ~]$ cat /usr/local/ ...

  6. Nginx用户认证配置方法详解(域名/目录)

    Nginx超级强大它可以单独为一个域名设置用户认证,方法也很简单我们只要生成用户认证的用户名和密码,然后再Nginx添加auth认证配置即可 Nginx可以为某一个域名单独加用户认证,具体做法如下: ...

  7. nginx用户认证配置( Basic HTTP authentication)

    ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的http aut ...

  8. Apache配置--用户认证(针对目录访问)-update2015-05-02

    通过Apache配置可以限制用户对目录的访问,会弹出像phpadmin一样的登陆框. ========================================================= ...

  9. Nginx安装 默认虚拟主机 Nginx用户认证 Nginx域名重定向

    Nginx安装 cd /usr/local/src (http://nginx.org/en/download.html) wget http://nginx.org/download/nginx-1 ...

  10. nginx用户认证配置( Basic HTTP authentication)及认证原理和实现

    https://blog.csdn.net/guyue35/article/details/53906843

随机推荐

  1. Netty源码学习6——netty编码解码器&粘包半包问题的解决

    系列文章目录和关于我 零丶引入 经过<Netty源码学习4--服务端是处理新连接的&netty的reactor模式和<Netty源码学习5--服务端是如何读取数据的>的学习, ...

  2. json数组根据某属性去重

    数据: let arry = [ {name: "张三", age: 23, work: '计算机'}, {name: "王五", age: 29, work: ...

  3. jdk所有版本-自留收藏

    链接:https://pan.baidu.com/s/1NDbEAEbKeh8xFzjEwB8aLg 提取码:0000

  4. 基于DotNetty实现自动发布 - 项目的配置与发现

    前言 上一篇,我们实现了基于 DotNetty 的通信基础模块的搭建,本篇,主要实现待发布 Web 项目的集成. 创建待发布项目 为了测试, 我创建了一个基于 .NET 4.8 的 Web 项目 Op ...

  5. 【UniApp】-uni-app-内置组件

    前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-全局数据和局部数据 那么了解完了uni-app-全局数据和局部数据之后,这篇文章来给大家介绍一下 UniApp 中内置组件 首先不管三 ...

  6. Spring系列:基于Spring-AOP和Spring-Aspects实现AOP切面编程

    目录 一.概念及相关术语 概念 相关术语 ①横切关注点 ②通知(增强) ③切面 ④目标 ⑤代理 ⑥连接点 ⑦切入点 作用 二.基于注解的AOP 技术说明 准备工作 创建切面类并配置 各种通知 切入点表 ...

  7. Spring Boot内置的一些工具类

    1.断言Assert工具类 // 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行 // 参数 message 参数用于定制异常信息. void notNull(Obje ...

  8. C++ Qt开发:StatusBar底部状态栏组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QStatus ...

  9. 加速计算,为何会成为 AI 时代的计算力“新宠” 审核中

    随着科技的发展,处理大量数据和进行复杂计算的需求越来越高,人工智能.大数据和物联网等领域更是如此,传统的计算方式已经无法满足这些需求.因此,加速计算作为一种现代计算方式,成了必要的手段.加速计算具有前 ...

  10. 如何在LinkedIn上开发客户

    LinkedIn作为一个职场社交平台,提供了许多开发外贸客户的机会和工具.通过在LinkedIn上建立个人和公司的专业形象.分享有价值的内容.参与行业社群和利用广告推广,您可以扩大您的业务网络,找到更 ...