针对具有 varnish 和多个 NGINX Web 服务器的堆栈的 SSL 证书实现

针对具有 varnish 和多个 NGINX Web 服务器的堆栈的 SSL 证书实现

我当前的堆栈有 Varnish -> NGINX(2 个服务器)运行 Drupal -> MySql。

所有静态内容都由 Varnish 通过 HTTP 缓存和提供。但是,当用户注册并想要购买计划时,与支付网关的连接是通过 HTTPS 进行的。目前,证书是在一台 NGINX 服务器上实现的。域的 A 记录指向此 NGINX 服务器。

我打算将域名的 A 记录指向 Varnish 服务器,这样我就可以利用 Varnish 的缓存,而不是加载 NGINX 服务器。任何打算购买的访问者都将被转交给 NGINX。我有两个疑问

  1. 我是否应该为第二台 NGINX 服务器生成另一个证书,或者仅将第一台服务器上可用的证书实施到第二台服务器上就足够了?
  2. 这种设置会导致任何问题吗?我有这种感觉是因为包含证书的服务器不再具有映射到它的域。

编辑:我打算让 Varnish 监听端口 443,并让其将所有 HTTPS 请求传递到 NGINX 服务器

答案1

Varnish不支持 SSL 包装 ( https) 流量,因此您必须使用 SSL 终止器在它前面

有几种不同的应用程序可用于此目的。它们都终止 SSL 并将纯http文本流量转发到您的后端 ( Varnish):

  • 支持 SSL 的 (标准) http web 服务器阿帕奇或者nginx
  • 专用 SSL 终止符(称为wrapper),例如螺柱或者隧道
  • 具有 SSL 支持的特定用途的反向代理/负载平衡器,例如

最好使用专门开发的应用程序来终止 SSL 和/或代理请求。
作为网络服务器,nginx比更合适阿帕奇因为它通常被认为对于静态内容或代理来说速度更快。
nginx还可以轻松以最小的开销编译仅包含所有必要模块(http_corehttp_proxyhttp_ssl模块)的特定构建。

当所有 SSL 在终结器处终止时,您的后端nginx实例根本不需要知道有关 SSL 的任何信息(除了在所有链接中返回正确的主机名和方案)。
因此,它不需要证书和私钥。

相关内容