国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - 利用nginx+lua+redis實現反向代理方法教程

利用nginx+lua+redis實現反向代理方法教程

2019-11-27 16:11Furion Nginx

這篇文章主要給大家介紹了利用nginx+lua+redis實現反向代理方法教程,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

最近因為工作需要,要進行IVR的重構, 我們現在系統接了三家IVR服務商, N個業務, 由于IVR這玩意一般只能外網回調, 而開發環境又不允許外網隨便訪問,

著實煩人。 所有我們打算重構一把, 封裝多家IVR, 對業務透明, 同時回調可以針對多家IVR服務商的不同callid直接轉發到當時請求的同學的

開發域名去。

而不同的IVR服務商的callid參數是不同的,有的是在url里面(call_id), 有的則是直接post的json數據(callid), 所以太扯了。

直接用lua處理下, 查下redis里面這個callid當時是哪位同學發起的請求(請求IVR的時候會寫入redis中), 直接proxy_pass到這位同學的開發域名去就ok了。

環境部署

環境直接用openresty吧, redis、json這些常用庫都已經打包完畢, 也可以自己安裝, 就是太麻煩。

openresty

nginx配置

新建一個vhost, 配置如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
 
 server_name ivr.com;           
 access_log /home/work/log/nginx/access.ivr.log;
 error_log /home/work/log/nginx/error.ivr.log;
 
 proxy_set_header Host $http_host;
 proxy_set_header X-Forwarded-Port $server_port;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header X-Forwarded-Protocol $scheme;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_read_timeout 30;
 proxy_connect_timeout 10;
 
 
 location /ivr/ {
 lua_code_cache off;
 resolver 8.8.8.8;
 set $backend '';
 rewrite_by_lua_file /home/work/tengine-2.1.0/conf/lua/ivr.lua;
 proxy_pass http://$backend;
 }
}

不加resolver的話可能會報錯, 無法解析,加一個8.8.8.8就可以搞定了。

lua_code_cache 是開發環境的配置, 不緩存lua代碼, 修改完lua直接生效, 不然每次要重啟nginx, 上生產環境要關掉, 嚴重影響性能。

不過我們這個需求主要是針對開發環境, 所以無所謂。

lua代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
local redis = require "resty.redis"
local cjson = require "cjson"
local cache = redis.new()
cache.connect(cache, '127.0.0.1', '6379')
 
local args = ngx.req.get_uri_args()
local uri = ngx.var.request_uri
 
local callid = nil
local channel = 0
 
if string.find(uri, 'yuntongxun') then
 callid = args["callid"]
 channel = 0
elseif string.find(uri, 'yunhu') then
 ngx.req.read_body()
 local body_data = ngx.req.get_body_data()
 local data = cjson.decode(body_data)
 callid = data['call_id']
 channel = 1
elseif string.find(uri, 'huawei') then
 callid = args["vSessionsId"]
 channel = 2
else
 
end
 
if callid == nil then
 ngx.say(uri)
 ngx.say(cjson.encode(args))
 ngx.say('callid is empty')
 return ''
end
 
 
local key = callid .. '_channel' .. channel
local res = cache:get(key)
if res == ngx.null then
 ngx.say("cache get error")
 return ''
end
 
ngx.var.backend = res

沒啥特別的, 針對多個IVR服務商, 進行解析callid, 然后拼成一個key, 去redis中查詢整個key當時寫入的value(開發者域名),

最后設置backend整個參數, 然后由nginx進行proxy_pass就完了。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.furion.info/787.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人片在线播放 | 亚洲福利国产 | 久久久国产精品一区 | 午夜视频在线看 | 成人高清在线视频 | 最新国产视频 | 亚洲一区二区三区高清 | 中文字幕在线观看av | 久久精品综合 | 日本不卡一二三区 | 亚洲欧洲精品视频 | 成人午夜小视频 | 精品久久久久久久久久久久久久 | 操老逼 | 五月天综合网 | 中文字幕精品视频 | 污视频网站在线观看 | 国产一区二区免费 | 亚洲aaa在线观看 | 亚洲自拍偷拍一区 | 亚洲欧美一级久久精品 | 欧美一区二区三区在线视频 | 亚洲精品久久久久中文字幕欢迎你 | 国产精品一卡二卡 | 欧美日韩成人一区 | 亚洲精品1区 | 久久99精品久久久久久噜噜 | 久久久精品一区二区三区 | 国产一二三区在线观看 | 成人精品网站在线观看 | 婷婷色国产偷v国产偷v小说 | 久久久久久人 | 桃乃木香奈在线 | 久久久久亚洲 | 亚洲成人av在线 | 国产免费性 | 国产一区二区三区在线看 | 亚洲精品日韩精品 | 日本激情综合网 | 99热在线播放 | 午夜影院免费观看 |