能否使用 Lua 在 HA-Proxy 中选择后端程序?

我试图使用 HA-Proxy 中的 Lua 来计算 URI 字符串是否有效和最新。但我试了没能提取 URI 字符串值,以

  1. 比较请求提供的时间戳和系统的实际日期和时间(如果 OK/true,则在 30 分钟内 - 否则被拒绝/假);
  2. 检查另一个参数中的哈希是否被生成用于请求的路径和共享的秘密值(因此不需要调用它,没有可用的 API)与后端。

如果链接过时并给另一个用户,它就是无效的。 我甚至不确定这种方式是否可能实现,因为我已经浏览了 2 天,没有找到任何关于如何实现这个机制的线索。

它可以像这样表示:

        Web 页面                        ┌────┐
    ┌───────────────────────────────────┤ php│
    │                                   └────┘
    │               ┌───────────────┐
    │              │ HAProxy       │   ┌────┐
┌───▼──────┐        │               │   │ php│
│          │        │     ┌───────┐ │   └────┘
│ 用户   ├────────┼─────►Lua    │ │
└──────────┘        │     └────┬──┤ │   ┌────┐
                    │      OK  │┼┼┼─┼───► srv│
                    └──────────┴────┘200└────┘

        Web 页面                        ┌────┐
    ┌───────────────────────────────────┤ php│
    │                                   └────┘
    │               ┌───────────────┐
    │               │ HAProxy       │   ┌────┐
┌───▼──────┐        │               │   │ php│
│          │        │     ┌───────┐ │   └────┘
│ 用户   ├────────┼─────►Lua    │ │
└──────────┘        │     └─▲────┬┘ │   ┌────┐
                    │       │ NOK│  │   │ srv│
┌──────────┐        └───────┼────┼──┘   └────┘
│          │                │    │
│ 某人     ├────────────────┘    │
└─────▲────┘                     │
      │                     403  │
      └──────────────────────────┘

此时我真的不知道该怎么做,也不知道是否可能。 我尝试使用这种函数但没有任何结果:

    local ts = data_header:match("%d+,%s*[%d%.:]+,%s*[%d%.:]+,%s*(%d+),.*")
    if (math.abs(tonumber(ts) - tonumber(curr_ts)) <= delta) then
        return true
    end
    return false

并且我使用 rocks 尝试解码哈希时也遇到了一些问题 openssl 在 Lua 中也无法正常工作。...

任何帮助,谢谢!

点赞