最近由于项目需要学习了安全代理的相关知识,其实刚开始的时候是非常需要一个入门的介绍,大概说明下这个到底是个什么东西,能干啥,简单的原理是什么,为此我记录下我看完用完的心得,记录成笔记。

一般我们代码开发完成后需要和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宏观概述笔记相关推荐

  1. Data Structures with C++ Using STL Chapter 3算法概述---笔记

    <Data Structures with C++ Using STL Chapter 3算法概述---笔记>,作者:茉莉花茶,原文链接:http://www.cnblogs.com/yc ...

  2. c++定义一个动态全局变量_静态链接与动态链接的宏观概述及微观详解

    静态链接与动态链接的宏观概述及微观详解 第一部分 宏观概述 1. 静态链接 静态链接就是在程序运行前,链接器通过对象文件中包含的重定位表,完成所有重定位操作,并最终形成一个在运行时不需要再次进行依赖库 ...

  3. 【食品加工技术】第一章 食品加工技术概述 笔记

    [食品加工技术]第一章 食品加工技术概述 笔记 1.1 食品行业常用术语 食品 Food 传统食品 Traditional Food 天然食品 Natural Food 模拟食品 Imitation ...

  4. 工程经济学第一章工程经济学概述笔记

    工程经济学第一章工程经济学概述 1.1.1 工程与经济的概念 1. 工程的概念 工程不同于科学,也不同于技术. 科学本质上属于认识世界的范畴.科学是人类探索自然和社会现象并取得认识的过程和结果.这 里 ...

  5. 第一讲 网络安全概述笔记

    本讲主要从网络安全.黑客.网络犯罪和网络攻击和防御四个方面讲述,笔记如下: 转载于:https://www.cnblogs.com/P201421420035/p/7583298.html

  6. 【NoSQL】NoSQL入门和概述 - 笔记

    NoSQL入门和概述 BSON BSON 是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式.它是一种二进制表示形式,能用来表示简单数据结构.关联数组(MongoDB中 ...

  7. 计算机网络(第8版)谢希仁第一章概述笔记

    计算机网络概述 一.计算机网络在信息时代中的作用 1.计算机网络的定义 2.计算机网络的特点 二.互联网概述 1.计算机网络 2.互联网基础结构发展的三个阶段 3.互联网的标准化工作 三.互联网的组成 ...

  8. 概述笔记 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 ...

  9. 宏观经济笔记--CPI和PPI

    CPI,消费者价格指数. 这个宏观指标应该是普通人感受最深的一个指标,也是听的最多的一个指标.这个指标怎么来的呢? 价格嘛,最简单了,问一下,或者真实交易一下就行.关键是,市场上有那么多东西,就会有许 ...

最新文章

  1. RNA-Seq入门  如何跑通一个Rna-Seq流程
  2. LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法
  3. Junit Test使用样例
  4. 前端:常用单词(专业版)
  5. Android开发 装ubuntu,Ubuntu系统安装Android开发环境
  6. vim编辑器设置行号、缩进、tab键
  7. Solaris 10的第二次更新要点
  8. POJ 3168 Barn Expansion (几何+排序)
  9. C#中的线程lt;一gt;
  10. visio专业版svg图片裁剪
  11. 计算机网络应用基础的题,计算机网络应用基础试题
  12. stm32的语音识别_基于STM32的嵌入式语音识别模块设计
  13. centos6使用df命令,设备名称太长导致换行问题
  14. 稻盛和夫—《活法》读后感
  15. JVM年轻代和老年代垃圾回收
  16. PLC1200 模拟量采集
  17. Altium Designer PCB板框扩大
  18. matlab华侨大学,范文涛
  19. Xposed模块APP代码混淆
  20. Thinkpad E450c WIN8 重装系统 如何U盘启动

热门文章

  1. 计算机课上玩的打字游戏,上电脑课时偷偷玩的3个游戏,这些都没玩过,别说自己玩过游戏!...
  2. 【小程序】第一个小程序——创建小程序项目
  3. win10下不能修改固定ip
  4. 汇编语言编写方法及程序分析
  5. gcc/gdb/make/动/静态链接库介绍
  6. RoboCup仿真3D TC笔记(2014年合肥中国公开赛 仿真3D比赛环境搭建)
  7. 刚当上leader,我让组员去开会,他非说有更重要的会
  8. 芯片开发必读 | 什么是IP设计?为什么它很重要?
  9. 如何安装Java软件开发工具包(JDK)
  10. Java面试基础篇之集合