Stunnel + Varnish + Apache的问题

我目前正在Apache的前面运行所有HTTPstream量的清漆。 我添加了stunnel以便利用HTTPS连接的caching。 因此,对于HTTPS,stunnel会与清漆交谈,然后与Apache交谈。

问题是,当清漆将caching的页面返回到stunnel时,stunnel通过HTTPS将其发送到客户端,但其余资源(例如css文件,js文件等)由客户端通过普通HTTP请求。 我想这是由于caching页面包含链接到只有HTTP资源。

我的问题是:

  1. 这是反向SSL代理的常见问题?

  2. 有什么办法来防止这种forms发生?

  3. 比方说,我有一个域www.example.com,我希望它只能通过HTTPS访问,我也希望http://www.example.com不要返回404,而是要redirect到https:// www .example.com 。 这怎么能避免循环(即清漆redirect到通道,然后通过HTTP再次从清漆请求页面,然后又重新导向通道等)。 有没有什么方法可以让stunnel插入一个头文件,varnish会查找,以便在头文件不存在的情况下不执行任何redirect?

在某些网站中,如果您从HTTP切换到HTTPS版本,您应该通知网站configuration为“嗨,我们现在通过HTTPS提供服务”。 那么,原因是有的网站对其静态文件的URL生成器进行了硬编码configuration。 所以,即使他们通过HTTPS服务,静态资源URL生成器仍然认为我们正在通过HTTP通话。

现在,您怀疑清漆caching仍然提供旧内容。 猜测可能是真的…那么,你可以清除caching,以便确认理论

要redirect部件,您可以configuration清漆,以便他们执行redirect任务。 将此行添加到sub vcl_recv varnish config中

 if (!req.http.X-Forward-For && client.ip !~ localhost) { set req.http.x-Redir-Url = "https://" + req.http.host + req.url; error 750 req.http.x-Redir-Url; } 

逻辑:如果一些随机IP(其他那个localhost)连接清漆(因为他们仍然使用HTTP版本),清漆问题redirect到HTTPS。 从这个博客采取的VCL逻辑。

概要

  1. 要parsing静态文件URL部分,您应该(1)检查网站configuration,并通知我们现在通过HTTPS提供服务,(2)清除清漆caching。

  2. 将HTTPredirect到HTTPS任务可以通过varnish来完成