Openresty记录笔记

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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

        一般我们代码开发完成后需要和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请求访问其他服务

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6