Nginx 使用 mysql 结果作为变量在 headers more 模块中使用

Nginx 使用 mysql 结果作为变量在 headers more 模块中使用

我们不做过多详述,我们有以下要求:


a) 从mysql查询简单的单列、单行结果。

b) 将此变量用作更多标题模块 add_header 指令的一部分。

c) 如果没有返回结果(例如:行数为 0),则对请求 uri(我记得是 ($request_uri?) 进行模式匹配并使用此处的结果。

d) 理想情况下,将这些数据缓存在 nginx 端的某个地方,以便将来的请求可以重用这些数据,而无需 mysql 开销。大约有 500 万个结果,但一旦缓存,它们就始终保持不变。


有人用过 nginx 和 lua 吗,我猜这是最好的路线?

还有其他推荐的方法吗?

答案1

这确实是 nginx 不适合做的事情,大多数 web 应用程序平台(即 php、python、ruby、asp.net 等)会做得更好。Nginx 旨在实现非常直线的速度,数据库查找将比大多数 nginx 请求的实时时间更长。

因此,要回答这个问题——使用 nginx 反向代理到您选择的平台,在那里构建神奇的重定向器。如果您使用正确的标头反馈它并在 nginx 中配置缓存,您仍然可以利用 nginx 的这一部分来减轻应用服务器的负载,等等。

相关内容