Nginx 用于https的清漆

Nginx 用于https的清漆,nginx,https,reverse-proxy,varnish,haproxy,Nginx,Https,Reverse Proxy,Varnish,Haproxy,情况是这样的。我有通过安全网络(https)与多个后端通信的客户端。现在,我想建立一个反向代理,主要用于负载平衡(基于头数据或cookie)和少量缓存。所以,我认为清漆是有用的 但是,varnish不支持ssl连接。正如我在许多地方读到的,引用“Varnish不支持SSL本机终止”。但是,我希望每个连接,即客户端varnish和varnish后端都通过https。我不能在整个网络的任何地方都有明文数据(有限制),所以其他任何东西都不能用作SSL终止符(或者可以?) 因此,以下是问题: 首先,这

情况是这样的。我有通过安全网络(https)与多个后端通信的客户端。现在,我想建立一个反向代理,主要用于负载平衡(基于头数据或cookie)和少量缓存。所以,我认为清漆是有用的

但是,varnish不支持ssl连接。正如我在许多地方读到的,引用“Varnish不支持SSL本机终止”。但是,我希望每个连接,即客户端varnish和varnish后端都通过https。我不能在整个网络的任何地方都有明文数据(有限制),所以其他任何东西都不能用作SSL终止符(或者可以?)

因此,以下是问题:

  • 首先,这意味着什么(如果有人可以简单地解释)“Varnish不支持SSL本机终止”
  • 其次,使用varnish实现这个场景好吗
  • 最后,如果varnish不是一个很好的竞争者,我应该切换到其他反向代理吗。如果是,那么哪一个适合该场景?(HA、Nginx等)
这意味着什么(如果有人可以简单地解释)“Varnish不支持SSL本机终止”

这意味着Varnish没有对SSL的内置支持。除非SSL由单独的软件处理,否则它不能在具有SSL的路径中运行

这是Varnish作者的一个架构决定,他在2011年讨论了将SSL集成到Varnish中的设想

他将这一点建立在一系列因素的基础上,其中最重要的一个因素是想把它做好,但他同时注意到,SSL的事实上的标准库是openssl,它是一个包含300000多行代码的迷宫式集合,他既不相信代码库,也不相信有一个有利的成本/收益比

他当时的结论是,一句话,“不。”

这不是我小时候梦想做的事情之一,如果我现在梦到这件事,我称之为噩梦

他在2015年重新审视了这一概念

他的结论再次是“不”

代码是硬的,密码是双加硬的,如果不是双平方硬的,那么这个世界真的不需要另一段在密码方面做得半途而废的代码

当我看到像威利·塔罗(Willy Tarreau)的作品时,我很难看到任何重大的改进机会

不,Varnish仍然不会添加SSL/TLS支持

相反,在Varnish 4.1中,我们添加了对Willys代理协议的支持,这使得可以将SSL终止代理(如HAProxy)的额外细节传递给Varnish

这种增强可以简化将varnish集成到具有加密要求的环境中的过程,因为它提供了另一种机制,可以在卸载的SSL设置中保留原始浏览器的身份

使用varnish实现这个场景好吗

如果您需要清漆,请使用它,要知道SSL必须单独处理。但是请注意,这并不一定意味着未加密的流量必须穿越您的网络。。。尽管这确实会导致更复杂、更需要CPU的设置

其他任何东西都不能用作SSL终止符(或者可以?)

SSL可在清漆的正面卸载,并在清漆的背面重新建立,所有这些都在运行清漆的同一台机器上,但通过单独的过程,使用HAProxy或stunnel或nginx或其他解决方案,在清漆的前后。clear中的任何流量都是在一台主机的范围内运行的,因此,如果主机本身是安全的,则可以说不存在漏洞,因为它从不离开机器

如果varnish不是一个很好的竞争者,我应该切换到其他反向代理吗


这完全取决于您在堆栈中想要和需要什么、它对您的成本/收益、您的专业水平、资源的可用性以及其他因素。每个选项都有自己的功能和限制,在同一堆栈中使用多个选项肯定不是闻所未闻的。

您好,这是一个非常好的解释。这不仅仅是安全问题,还有审计/认证限制。因此,即使纯文本在同一台机器上,系统管理员也可以看到,即使这样也不可接受。因此,无论我将使用什么方法从内部路由流量,我都需要它来路由SSL流量。因此,我现在可能会使用
HAProxy
进行负载分配。好的,另一方面,您知道HAProxy是否可以用于基于Http(s)头/参数和/或cookies分配负载吗?@vish4071是,只要HAProxy终止SSL连接,HAProxy就可以检查有效负载并在HTTPS上做出与HTTP相同的路由决策。它可以将SSL重新建立到后端,因此未加密的数据只在HAProxy进程中,这与Varnish的情况不同,但实际上与web服务器本身的情况没有什么不同——加密的数据必须由web服务器解密,否则应用程序无法处理。