我们不做过多详述,我们有以下要求:
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 的这一部分来减轻应用服务器的负载,等等。