当前位置: 首页 > 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的证书和秘钥
  • 添加黑名单进行拦截黑名单的访问IP
  • 代理里面验证jwt的token
  • 代理里面使用http请求访问其他服务

相关文章:

  • 个人求职网站源代码/自己制作一个网页
  • 烟台网站建设地址/开一个免费网站
  • 商城型外贸网站建设/百度文库官网登录入口
  • 电子商务网站建设陈建祥/个人网站设计毕业论文
  • 北京建设厅查证网站/大众点评seo关键词优化
  • 做外贸方面的网站/全球搜索引擎入口
  • 最容易理解的并查集详解
  • Kruskal重构树学习笔记(C++)
  • 电商erp迁往云端必须注意的5件事
  • docker-compose 搭建伪分布模式redis cluster集群
  • JS逆向之补环境过瑞数详解
  • 【PR #5 C】和平共处(整体二分)
  • 数组、对象操作方法
  • 2023-01-16 阿里SMS短信接口使用
  • 【linux kernel】Linux设备驱动模型 | bus
  • HTML的body元素
  • Spring Boot(五十四):SpringBoot事件监听机制
  • Fastdfs分布式文件系统原理浅析