有一段时间我的团队和我一直在使用客户端的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。非常感谢您的帮助!
答案 0 :(得分:0)
正如您所注意到的,Varnish(目前)已接近处理请求或响应机构。 但是,它与标题相当不错。
您是否可以更改应用程序,以便有足够的信息通过标题单独进行身份验证?
POST到其中嵌入了auth令牌的URL,或添加其他请求标头。 (X-auth-token:foo)
我还建议使用CURL VMOD调用身份验证服务器,而不是使用重新启动。使VCL更易读,更容易调试。