我对网络缓存系统有一些疑问。
如果我在我的架构前面使用 Squid、Varnish 之类的系统作为反向代理:
是否可以在用户和代理之间建立 SSL 连接,以及在代理和 Web 服务器之间建立 SSL 连接?在这种情况下,如果我的所有连接都使用 SSL...是否可以使用缓存系统?
如果我有更多动态页面(例如,页面顶部有用户名),是否可以使用 Web 缓存?通常,Squid 和 Varnish 的 Web 缓存也仅用于静态内容,还是也用于动态内容?
答案1
- 我可以将 SSL 连接代理到 SSL 后端吗:是的
- 动态内容无法通过传统方式缓存,除非进行大量修改。通常只缓存静态内容(不会根据用户状态而改变的内容)。
答案2
从未使用过 Squid,所以我的回答仅限于 Varnish。
Varnish 不支持 SSL,因此你必须在 Varnish 前面使用一些 king os SSL 终结器(比如最新的 HAproxy、stud、stunnel 等),并且 Varnish 和后端服务器之间的另一层是后端的 HTTPS,这是必需的。[1]
您可以使用 Varnish 的高级方法(例如 ESI 包含)来执行这种高级动态缓存,但实现起来并不简单。[2]
[1]https://www.varnish-cache.org/docs/trunk/phk/ssl.html
[2]https://www.varnish-cache.org/docs/trunk/users-guide/esi.html?highlight=esi