OpenResty 反向代理的用法与技巧
Posted 运维帮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenResty 反向代理的用法与技巧相关的知识,希望对你有一定的参考价值。
作者: IResty
nginx最开始是作为反向代理被熟知的,基于它的OpenResty的自然也是支持反向代理的,下面我们就来看看它的一些基本用法以及在使用过程中的一些技巧。
一、基本用法
在业务环境中,可能会将OpenResty(以后简称OR)作为反向代理,根据不同的location定位到不同的后端,在这样的架构下,对应的反向代理配置可能是这样的:
当需要做_上游切换_的时候,通过修改 /etc/host 文件来将域名定向到新的Ip,但不幸的是,Ngixn并不会使用/etc/host 而是使用命令resolver来指定DNS服务器,那么在OR里面有没有一些高阶的用法可以让上游漂移变得简单呢?答案是肯定的,下面就来看看更加方便的用法,以及里面的坑。
二、进阶用法
看到这里有人可能会问,为什么需要配置一个额外的跳转location,而不直接在set_by_lua阶段访问redis并对Nginx变量进行赋值?
原因是函数get_upstream_from_redis会涉及到redis的访问,而lua-resty-redis使用了ngx.socket.tcp这个函数,这个函数所支持的执行阶段不包括_set_阶段,需要我们需要一次跳转,通过第一次location的content阶段从redis中将数据读取出来,在第二个location的set阶段利用刚才所读取的数据完成反向代理。
需要注意的是如果第一次location,(也就是上述代码中的/upstream_A)的流量非常高,那么可以在redis的访问函数,也就是上述代码中的get_upstream_from_redis()函数中用shared.dict来做一次缓存,减少对redis的访问量也是可行的。
运维帮已开通多个微信群供大家交流学习,需要先加南非蜘蛛微信 (yunweibang008)后拉你入群。
会员讨论群:总群1、总群2、总群3
地方讨论群:北京、上海、广州、深圳、杭州、成都
软件讨论群:Nginx、Zabbix
欢迎给订阅号投稿,同时也欢迎加入QQ技术讨论群186356564
点击最下方{阅读原文}注册运维帮会员,享受会员专属礼遇
欢迎分享运维经验
加我为好友,扫码下方二维码
以上是关于OpenResty 反向代理的用法与技巧的主要内容,如果未能解决你的问题,请参考以下文章
Ceryx —— 基于 NGINX OpenResty 的动态反向代理