Openresty宏观概述笔记
最近由于项目需要学习了安全代理的相关知识,其实刚开始的时候是非常需要一个入门的介绍,大概说明下这个到底是个什么东西,能干啥,简单的原理是什么,为此我记录下我看完用完的心得,记录成笔记。
一般我们代码开发完成后需要和Nginx进行联合部署,Nginx作为网页访问的窗口,也是访问代理的作用,因为我们需要在代理里面做一些定制化的开发,所以我们选择使用开源软件工具openresty。openresty看过之后就明白了,它其实就是Nginx,本质上也是代理,而且是在Nginx的基础上开发而来的。那它和Nginx有什么区别呢,最大的区别就是它可以做很多定制化的开发,比如说,修改请求的header信息,添加一些访问参数,修改请求的body内容等等,说白了就是Nginx能干的事它都能干,openresty能干的事Nginx干起来很麻烦,对于开发者来说不友好。在现在很多的web代理服务很多都是用的openresty来做代理。
openresty做开发的时候需要使用lua语言来进行开发,lua是脚本语言,可以使用很简单的几句话实现想要的功能。openresty这个软件基于Nginx开发而来,她把代理服务的过程拆成了很多部分,每个部分,我们可以在里面去进行二次开发,以达到我们想要的目的,最经典的是下面这张图,这张图在很多网上资料都会有,它是openresty的基本框架,如下图所示:
第一次看到这个图的时候其实是比较陌生的,完全不明白这个图到底讲的是啥。后面是开发完了才渐渐明白,这里我先大概总结下,这个图可以理解成Nginx工作的所有流程,上面大致分为了四栏,工作流程是从上到下,第一栏的两个流程init,这两个流程是openresty起来的时候最先执行的两个流程,你可以在这个两个流程里面去实现一些功能,比如说,参数配置或者环境变量配置等,因为init这个流程只会执行一次;然后是后面的第二、三、四栏流程,这个三个流程是代理的每一个请求都会经历的流程,意思是假如代理的一个GET或者POST请求到openresty,都会经历后面的三个流程,那么你就可以在这后面的几个流程里面添加所需的功能。
我这个笔记不记录openresty的安装过程,网上教程太多,可以自己另外寻找,各个服务平台安装时还有一些细微的区别,我是在centos7.X上面搭建的openresty开发环境。我说下我开发遇到印象比较深的几个问题:
- lua代码里面两个字符串的组合不是像其他语言那样直接用+,而是直接用两个英文的句号..
- 可以在代码里面添加打印ngx.log(ngx.ERR, "打印字符串数据",message),里面的ngx.ERR是日志类型,还可以用ngx.INFO等其他日志类型,打印信息在/usr/local/openresty/nginx/logs路径下面进行查看
- 使用下面命令启动关闭openresty
#启动openresty,启动后可以在浏览器输入地址看到代理返回的消息
sudo /usr/local/openresty/bin/openresty -p /usr/local/openresty/nginx/
#执行下面命令停止openresty服务
sudo /usr/local/openresty/bin/openresty -s stop
下面是我开发过程中用到的几个服务功能
- 动态更新https的证书和秘钥:动态更新SSL证书
- 添加黑名单进行拦截黑名单的访问IP:黑白名单的拦截操作
- 代理里面验证jwt的token:lua代码实现jwt的token认证
- 代理里面使用http请求访问其他服务:lua实现http请求例子
Openresty宏观概述笔记相关推荐
- Data Structures with C++ Using STL Chapter 3算法概述---笔记
<Data Structures with C++ Using STL Chapter 3算法概述---笔记>,作者:茉莉花茶,原文链接:http://www.cnblogs.com/yc ...
- c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解
静态链接与动态链接的宏观概述及微观详解 第一部分 宏观概述 1. 静态链接 静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库 ...
- 【食品加工技术】第一章 食品加工技术概述 笔记
[食品加工技术]第一章 食品加工技术概述 笔记 1.1 食品行业常用术语 食品 Food 传统食品 Traditional Food 天然食品 Natural Food 模拟食品 Imitation ...
- 工程经济学第一章工程经济学概述笔记
工程经济学第一章工程经济学概述 1.1.1 工程与经济的概念 1. 工程的概念 工程不同于科学,也不同于技术. 科学本质上属于认识世界的范畴.科学是人类探索自然和社会现象并取得认识的过程和结果.这 里 ...
- 第一讲 网络安全概述笔记
本讲主要从网络安全.黑客.网络犯罪和网络攻击和防御四个方面讲述,笔记如下: 转载于:https://www.cnblogs.com/P201421420035/p/7583298.html
- 【NoSQL】NoSQL入门和概述 - 笔记
NoSQL入门和概述 BSON BSON 是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式.它是一种二进制表示形式,能用来表示简单数据结构.关联数组(MongoDB中 ...
- 计算机网络(第8版)谢希仁第一章概述笔记
计算机网络概述 一.计算机网络在信息时代中的作用 1.计算机网络的定义 2.计算机网络的特点 二.互联网概述 1.计算机网络 2.互联网基础结构发展的三个阶段 3.互联网的标准化工作 三.互联网的组成 ...
- 概述笔记 TREC 2020|OVERVIEW OF THE TREC 2020 DEEP LEARNING TRACK
文章目录 1 介绍 2 任务定义 2.1 文档检索 2.2 段落检索 3 数据集 4 结果分析 4.1 深度学习与传统方法的对比 4.2 端到端检索与重排的对比 4.3 ORCAS数据的影响 4.4 ...
- 宏观经济笔记--CPI和PPI
CPI,消费者价格指数. 这个宏观指标应该是普通人感受最深的一个指标,也是听的最多的一个指标.这个指标怎么来的呢? 价格嘛,最简单了,问一下,或者真实交易一下就行.关键是,市场上有那么多东西,就会有许 ...
最新文章
- RNA-Seq入门 如何跑通一个Rna-Seq流程
- LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法
- Junit Test使用样例
- 前端:常用单词(专业版)
- Android开发 装ubuntu,Ubuntu系统安装Android开发环境
- vim编辑器设置行号、缩进、tab键
- Solaris 10的第二次更新要点
- POJ 3168 Barn Expansion (几何+排序)
- C#中的线程lt;一gt;
- visio专业版svg图片裁剪
- 计算机网络应用基础的题,计算机网络应用基础试题
- stm32的语音识别_基于STM32的嵌入式语音识别模块设计
- centos6使用df命令,设备名称太长导致换行问题
- 稻盛和夫—《活法》读后感
- JVM年轻代和老年代垃圾回收
- PLC1200 模拟量采集
- Altium Designer PCB板框扩大
- matlab华侨大学,范文涛
- Xposed模块APP代码混淆
- Thinkpad E450c WIN8 重装系统 如何U盘启动