Nginx--用户认证&&访问控制&&限速&&状态访问
一 用户认证
某些网页只希望给特定的用户访问,可以设置用户认证,使用户访问时需要进行身份认证,只有认证通过才可访问网页
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--用户认证&&访问控制&&限速&&状态访问的更多相关文章
- Linux centosVMware Nginx安装、 默认虚拟主机、Nginx用户认证、Nginx域名重定向
一. Nginx安装 cd /usr/local/src wget http://nginx.org/download/nginx-1.12.1.tar.gz 版本在http://nginx.org/ ...
- nginx用户认证与htpasswd命令
最近在搭建ELK,然后ELK的kibana界面想添加一个访问限制,看到kibana有个插件x-pack,本来想用用,发现是收费的,就放弃了,然后就想着想配置下nginx的认证访问来实现简单的访问登陆. ...
- nginx的安装 、Nginx默认虚拟主机、nginx用户认证、nginx 域名重定向
1.nginx:官网:www.nginx.org 下载:wget -c http://nginx.org/download/nginx-1.14.0.tar.gz解压:tar -zxvf nginx ...
- Nginx安装、默认虚拟主机、Nginx用户认证和域名重定向
6月7日任务 12.6 Nginx安装12.7 默认虚拟主机12.8 Nginx用户认证12.9 Nginx域名重定向 扩展nginx.conf 配置详解 http://www.ha97.com/51 ...
- Nginx 用户认证
访问一些比较私密的页面 ( 如管理后台,数据后台 ) 时,我们就可以设置访问该页面时需要使用用户名和密码进行验证,这就是用户认证 [root@localhost ~]$ cat /usr/local/ ...
- Nginx用户认证配置方法详解(域名/目录)
Nginx超级强大它可以单独为一个域名设置用户认证,方法也很简单我们只要生成用户认证的用户名和密码,然后再Nginx添加auth认证配置即可 Nginx可以为某一个域名单独加用户认证,具体做法如下: ...
- nginx用户认证配置( Basic HTTP authentication)
ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的http aut ...
- Apache配置--用户认证(针对目录访问)-update2015-05-02
通过Apache配置可以限制用户对目录的访问,会弹出像phpadmin一样的登陆框. ========================================================= ...
- Nginx安装 默认虚拟主机 Nginx用户认证 Nginx域名重定向
Nginx安装 cd /usr/local/src (http://nginx.org/en/download.html) wget http://nginx.org/download/nginx-1 ...
- nginx用户认证配置( Basic HTTP authentication)及认证原理和实现
https://blog.csdn.net/guyue35/article/details/53906843
随机推荐
- 代替gets()的新操作
1 scanf("%[^\n]", s); ^是"非" \n是换行 所以这就是一直读到\n才结束
- iOS程序入口结构
盛年不重来,一日难再晨.及时宜自勉,岁月不待人. 1. 程序入口 在我们开始开发app的时候,第一步往往是通过设置AppDelegate.m的代理方法开始写一些启动的东西,然后再通过控制器View ...
- js 通过id、pid遍历集合获得树结构
原数据 let adreeJson = [ {id: 1, name: '陕西省', pid: 0}, {id: 2, name: '山西省', pid: 0}, {id: 3, name: '广东省 ...
- 金蝶云星空与泛微OA集成的方案落地与实践
打破信息孤岛,泛微OA集成的方案落地与实践 在现代企业内部,不同类型的业务系统和泛微OA平台层出不穷.企业需要找到一种高效的方法来整合和协同这些多样化的系统,同时将它们与泛微OA平台融合,以实现资源整 ...
- C/S结构用户界面设计
C/S结构用户界面设计 [实验编号] 10003809547j 图形用户界面设计 [实验学时] 8学时 [实验环境] l 所需硬件环境为微机: l 所需软件环境为Microsoft Visual S ...
- 【结对作业】第一周 | 学习体会day02
今天我们想要实现线路的查询 发现了几个错误 1 <%-- 下拉表单的命名使用错误,导致无法接收前端数值--%> 首先我们很少使用下拉表单,之前用的也忘了,然后格式出现了错误 2 遇到typ ...
- Mock基础知识
使用的框架:moco框架下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/ 启动方式:java -j ...
- localhost工具:本地代码的远程之路
在日常的开发过程中,本地代码远程调试一直是最理想的开发状态.本文通过介绍京东集团内开发的一个轻量简单的小工具"localhost",从多角度的方案思考,到原理介绍,到最终的方案落地 ...
- 10、goto语句
1.goto语句的概念 goto语句:可以无条件的转移到运行中指定的行 这个用的比较少,了解一下即可 2.语法结构和用法 /** * @author ly (个人博客:https://www.cnbl ...
- CH395+EMQX实现MQTT应用(Windows系统)
目录: 1.MQTT协议 1.1简介 1.2特性 1.3实现方式 1.4数据包结构 2.EMQX具体操作步骤 3.代码说明 4.工程链接 MQTT协议 1.MQTT简介 MQTT是一种基于 发布/订阅 ...