当前位置: 首页 > news >正文

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
  • 代理里面使用http请求访问其他服务

相关文章:

  • 网站查询域名ip查询/上海seo优化
  • 给网站做蜘蛛抓取/seo精灵
  • 中国消防公众号关注/湖南seo推广软件
  • html5电影网站设计论文/交换友情链接吧
  • 做微网站/品牌策划公司排行榜
  • 域名信息备案管理系统查询/关键词优化排名怎么做
  • 类模板的友元
  • Kettle源码启动运行
  • 独立产品灵感周刊 DecoHack #044 - 新的一年如何管理你的时间
  • opencv开发之numpy使用
  • 9.6 容器适配器
  • MATLAB算法实战应用案例精讲-【图像处理】小目标检测(补充篇)(附python代码实现)
  • chrono_duration(一)
  • 《Linux Shell脚本攻略》学习笔记-第一章
  • [LeetCode]-动态规划-3
  • Cadence OrCAD: 跨页符和电源符号命名优先级的一个小问题
  • LeetCode分类刷题----哈希表篇
  • 2023牛客寒假算法基础集训营1(10/13)