【发布时间】:2014-12-13 17:42:32
【问题描述】:
我正在尝试为 PoC 做的事情是向来自动态后端服务器的网页添加 href。使用“subs_filter”添加 href 很容易,但我需要使用嵌入在响应中的信息来构造 href。
是否可以使用 LUA 处理来自 proxy_pass 的响应,修改它并返回给请求者(客户端)?
欢迎提出任何建议。
下面是我正在查看的代码,现在我更好地理解了 Lua 以及 nginx 如何使用它,我看到“body_filter”是正确的方法。但是代码看起来很简单,但我无法让正则表达式工作。
进一步的背景,我正在尝试解析返回的 proxy_pass 响应,解析它的开始和结束时间,然后构造一个放在头部的 JS 脚本 url。
我要对其进行正则表达式的响应示例。
Informações Adicionais
Horário de início: 08H50
Horário de término: 09H14
'location {}'中的代码
body_filter_by_lua '
-- my regex which is validate but doesn't seem to be within LUAJIT
--local from, to, err = ngx.re.find(ngx.arg[1], "(.início: *\d{2}H\d{2})", "jo")
local from, to, err = ngx.re.find(ngx.arg[1], "início", "jo")
replacestr = string.sub(ngx.arg[1], to, 5)
replaceme = "<script></script></head>"
ngx.arg[1] = ngx.re.sub(ngx.arg[1],"</head>", replaceme)
';
例如,将“início”更改为“head”是可行的,所以我假设它是重音字符,但我无法找到对此的确认。
将“início”更改为“\d{2}H\d{2}”失败,出现“body_filter_by_lua:5: invalid escape sequence near '”'”
【问题讨论】:
-
欢迎来到 SO。你做了什么研究?
-
我一直在尝试使用'content_by_lua',还有'ngx.location.capture'等方法。我终于找到了可能我正在寻找的东西,即使用'body_filter_by_lua'并设置'ngx.header.content_length = nil'。
-
感谢安迪,此信息可以帮助其他一般可以提供帮助的人。太好了,您认为您可能已经找到了解决方案。如果您有它,请考虑将其作为
answer发布给自己,以防其他人可能会遇到同样的问题。您也应该可以将mark作为答案。谢谢朋友 -
@User52784246 谢谢。现在我已经取得了进展,我更好地理解了 nginx 对 Lua 的使用,但我并不完全在那里。我改进了我的问题。