nginx的access的阶段的access模块、auth_basic模块、auth_request模块及satisfy指令介绍
access 模块
示例从上向下匹配
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
auth_basic模块 基于用户名密码做认证
安装http-tools 工具
[root@python ~]# htpasswd -cb yt yu 123
Adding password for user yu
[root@python ~]# htpasswd -b yt yutre 123qwe
Adding password for user yutre
[root@python ~]# cat yt
yu:$apr1$/N3KI0q8$UxOw8KlG1QBO5N2Niryxo0
yutre:$apr1$BAFJsGn2$qKrWI0G6cSzPPIEG4XGPV0
nginx配置
[root@python vhast]# cat auth_basic.conf
server {
server_name auth_basic.com;
default_type text/plain;
root html/;
location /{
satisfy any;
auth_basic "tset auth_basic";
auth_basic_user_file passwd;
deny all;
}
}
auth_request模块 基于第三方库做认证;需要重新编译,默认没有这个模块;
[root@python vhast]# cd ~/nginx-1.15.9/
[root@python nginx-1.15.9]# ./configure --prefix=/data/web --sbin-path=/usr/bin --user=nginx --group=nginx --with-http_stub_status_module --with-http_auth_request_module
checking for OS
[root@python nginx-1.15.9]# make
[root@python nginx-1.15.9]# rm -rf /usr/bin/nginx
[root@python nginx-1.15.9]# cp objs/nginx /usr/bin/
原理:收到请求后,生成子请求,通过反向代理技术把请求传递给上游服务器,通过上游服务的响应来判断是否处理这个请求,若上游服务器返回的响应码是2**,则继续执行,若返回401或403;则将响应码返回客户端
指令介绍
Syntax: auth_request uri | off;
Default: auth_request off;
Context: http, server, location
Syntax: auth_request_set $variable value;
Default: —
Context: http, server, location
配置
server {
server_name auth_basic.com;
root html;
location /iiiii{
satisfy any;
auth_basic "tset auth_basic";
auth_basic_user_file passwd;
deny all;
}
location / {
auth_request /test_auth;
}
location = /test_auth {
proxy_pass http://127.0.0.1:90;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
}
认证服务器
server {
listen 90;
location / {
return 201 'auth succes';
}
}
测试正常返回

测试异常返回
[root@python vhast]# cat test-l.conf
server {
listen 90;
location / {
return 401 'auth succes';
}
}
测试

satisfy指令介绍
Syntax: satisfy all | any; #all表示3个模块都通过认证才往下走;any表示3个模块任意一个通过就可以通过了
Default: satisfy all;
Context: http, server, location
有return指令,access阶段的指令不会生效
nginx的access的阶段的access模块、auth_basic模块、auth_request模块及satisfy指令介绍的更多相关文章
- Nginx 服务器伪静态配置不当造成 Access denied
Nginx 服务器伪静态配置不当造成 Access denied 有群有反馈将 FastAdmin 布署到阿里云后无法打开后台. 出现如下提示,首页是可以打开,点登录链接后出现的.(下是群友的截图) ...
- Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理
通过我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做.至 ...
- 使用auth_request模块实现nginx端鉴权控制
使用auth_request模块实现nginx端鉴权控制 nginx-auth-request-module 该模块是nginx一个安装模块,使用配置都比较简单,只要作用是实现权限控制拦截作用.默认高 ...
- nginx日志模块与HTTP过滤模块与sub模块修改返回内容
日志格式使用指令 指令介绍 Syntax: log_format name [escape=default|json|none] string ...; Default: log_format com ...
- nginx 11个处理阶段 && nginx lua 8个处理阶段
1. nginx 11 个处理阶段 nginx实际把请求处理流程划分为了11个阶段,这样划分的原因是将请求的执行逻辑细分,各阶段按照处理时机定义了清晰的执行语义,开发者可以很容易分辨自己需要开发的模块 ...
- 原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56
为了测试一个NGINX变量,将NGINX加了一个编译模板echo-nginx-module-0.56. 参照如下文件 1,先看以前NGINX有哪些东东. sbin/nginx -Vnginx vers ...
- Access之C#连接Access
原文:Access之C#连接Access 如果是个人用的小程序的话.一般都推荐用Sqlite和Access 使用SQlite数据库需要安装SQLite驱动,详情:SQLite之C#连接SQLite 同 ...
- nginx防盗链处理模块referer和secure_link模块
使用场景:某网站听过URI引用你的页面:当用户在网站点击url时:http头部会通过referer头部,将该网站当前页面的url带上,告诉服务本次请求是由这个页面发起的 思路:通过referer模块, ...
- Day5 模块及Python常用模块
模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Mod ...
随机推荐
- Docker - 命令 - docker network
概述 docker network 命令 背景 newwork 是 docker 的一种资源 经常会使用 需要整理命令 1. 引入 概述 docker run 时, 将容器端口映射到宿主机 场景 启动 ...
- 【C语言】实参求值的顺序
#include<stdio.h> void fun(int x,int y) { printf("x=%d,y=%d",x,y); } int main() { in ...
- Linux下tail命令的使用方法
Linux下tail命令的使用方法: linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,ta ...
- 前端开发CSS清除浮动的方法有哪些?
在前端开发过程中,非IE浏览器下,当容器的高度自动,并且容器内容中有浮动元素(float为left或right),此时如果容器的高度不能自适应内容的高度,从而使得内容溢出破坏整体布局,这种现象叫做浮动 ...
- iOS 优化ipa包,减小安装包大小
https://www.jianshu.com/p/a49d59b01669 项目打包之后.ipa包的大小是118.9M,上传到App Store后iPhone6s上显示85.5M,下载时间太长,所以 ...
- opencv python:图像直方图 histogram
直接用matplotlib画出直方图 def plot_demo(image): plt.hist(image.ravel(), 256, [0, 256]) # image.ravel()将图像展开 ...
- 5、Maven-构建配置文件
什么是构建配置文件? 配置文件是一组配置的集合,用来设置或者覆盖Maven构建的默认设置, 使用配置文件可以为不同的环境定制构建过程,例如Producation和Development环境. Prof ...
- hybird怎么实现的(核心webview)
链接:https://blog.csdn.net/gongch0604/article/details/80510005
- appium可通过SDK自带的uiautomatorviewer或monitor工具,来查看页面元素(Android)
工具一:uiautomatorviewer 1.在SDK的tools目录中找到uiautomatorviewer,双击打开若出现闪退一般是jdk版本不匹配(建议安装jdk1.8的): 2.在使用这个工 ...
- WechatPro_页面创建
1. 全局三个文件,app.js, app.json, app.wxss(名称不可更改) 2.创建Pages目录文件,用来放置各个页面 3.创建页面(页面命名,创建四个文件) (1)js:页面逻辑实现 ...