1

一段时间以来,我和我的团队一直在使用客户端开发 API 服务器。我们想使用一个单独的服务器作为认证服务器。考虑下图。

+----------+
|          |
|  Client  |
|          |
+-^------+-+
  |      |
 (6)    (1)
  |      |
  |      |
+-+------v-+            +----------+
|          +----(2)----->          |
|  Proxy   |            |   Auth   |
|          <----(3)-----+          |
+-^------+-+            +----------+
  |      |
 (5)    (4)
  |      |
  |      |
+-+------v-+
|          |
|  Apache  |
|          |
+----------+

现在我们已经将 Varnish Cache 设置为这个反向代理,它可以很好地解决一个非常重要的问题。为了实现上面的流程,我们必须在客户端轮询认证服务器以确认头部中提供的某些访问令牌的有效性之后重新启动清漆循环。这里的怪癖是,当发送 POST 请求(也需要进行身份验证)时,varnish 将在重启循环后省略 POST 请求正文。API 永远不会收到任何 POST 数据 ( https://www.varnish-cache.org/trac/ticket/652 )。这就是我们卡住的地方。

主要问题是:我们如何实现我们试图在图中完成的流程?理想情况下,我们继续使用 varnish 作为反向代理缓存机制,但如果我们需要设置不同的反向代理并让 Varnish 只是代理和 API 之间的缓存服务器,我没有任何问题。非常感谢您的帮助!

4

1 回答 1

0

正如您所注意到的,Varnish(目前)几乎没有处理请求或响应主体。但是,它与标题相当不错。

您能否更改应用程序,以便有足够的信息仅通过标头进行身份验证?

POST 到其中嵌入了身份验证令牌的 URL,或添加其他请求标头。(X-auth-token: foo)

我还建议使用CURL VMOD调用身份验证服务器,而不是使用重新启动。使 VCL 更具可读性和易于调试。

于 2013-02-13T08:22:23.747 回答