首先,据我了解,Varnish Cache 只是一个 HTTP 加速器,因此不支持通过 HTTPS 进行客户端或服务器端(后端)连接,尽管存在本白皮书。如果不是这种情况,而 Varnish 确实支持客户端 HTTPS 请求,那么我的问题就是:我该如何设置?
好的,所以我的设置目前只是一个 VPS 上的 LEMP 堆栈,通过 HTTPS 提供网页;HTTP 请求被 301 重定向到 HTTPS,并使用 HSTS。任何有关可扩展性的相关评论也将不胜感激,因为该网站平均每天有大约 7000 个会话。根据我所读到的内容,使用 Varnish 进行此设置的最佳方法是让 Nginx 充当 SSL/TLS 终止器,将请求转发到 Varnish,后者又将未缓存的请求转发回 Nginx 进行处理。让我们将客户端 SSL/TLS 终止 Nginx 实例称为“Nginx A”,将处理未缓存请求的 Nginx 实例称为“Nginx B”(尽管它们可能是同一个安装实例,只是由不同的虚拟服务器块处理):
+---------------+
+----------+ HTTPS | Nginx A | HTTP +---------+
| Internet | <-----> | (SSL/TLS | <----> | |
+----------+ | terminator) | | |
+---------------+ | Varnish |
| Nginx B | | |
| (for uncached | <----> | |
| requests) | HTTP +---------+
+---------------+
我的问题如下:这个设置是否比我当前的 LEMP 堆栈(没有 Varnish)和 Nginx 缓存请求更好?当然,Varnish 的缓存比 Nginx 要好得多,但我认为在新的设置中,Nginx A 将成为一个明显的瓶颈,因为任何由 Varnish 提供的缓存请求都必须由它处理,而未缓存的请求的响应速度会比现在更慢,因为 Nginx B 必须先将它们推送到 Nginx A,然后才能通过互联网发送。