中型网站:过渡到HTTPS,Apache和反向代理

时间:2016-02-14 15:46:33

标签: apache nginx https reverse-proxy

我有一个名为algebra.com的中型网站。截至今天,它在Quantcast评级中排名第900位。

在其使用的高峰期,在工作日的晚上,它每秒为对象提供超过120-150个查询。几乎所有对象(包括图像)都是动态生成的。

每月有750万次网页浏览量。

它是Ubuntu上Apache2的服务器,并由Perlbal反向代理补充,这有助于减少正在使用的apache插槽/子进程的数量。

我花费了大量时间来处理HTTP的性能,结果是一个运行良好的网站。

既然时代要求转换到HTTPS(这里完全合理,因为我有登录和注册用户),我想确保我不会以灾难结束。

然而,我担心我最终可能会遇到性能噩梦,因为HTTPS会话的持续时间更长,我不确定反向代理是否能像HTTP那样提供帮助。

其次,我想确保我有足够的CPU容量来处理HTTPS流量。

同样,这不是一个每秒点击几次的小网站,我们说的是每秒100次点击。

此外,我在一台服务器上运行多个站点。

例如,我可以拥有一个反向代理,它支持一个IP(SNI)上的多个虚拟域,并将HTTPS流量转换为HTTP,这样我就不需要加密两次(一次通过apache进行代理,并且一次由客户端浏览器的代理)?

什么是"最佳实践方法"有多个网站,有些是大型网站,由HTTP和HTTPS混合使用?

也许我可以继续在端口80上运行perlbal,并在端口443上运行nginx?是否可以将nginx配置为多个HTTPS站点的反向代理?

1 个答案:

答案 0 :(得分:2)

你真的需要加载测试,除此之外没有人能给出明确的答案。

我会提供以下建议:

首先,堆栈溢出实际上是编程问题。这个问题可能属于姐妹网站www.serverfault.com。

Https处理,恕我直言,这不是现代硬件的问题,除非您正在加密大量流量(例如视频流)。特别是通过适当的缓存和其他性能调整,我认为你已经完成了你在问题中所说的内容。但是没有处理您的流量网站,因此它可能成为一个问题。

在初始连接上协商https会话时,客户端会受到轻微打击。这大约是几百毫秒,只会在每个会话的初始连接上发生,大多数人不太可能注意到它,但它就在那里。

您可以采取一些措施来优化https,包括选择快速密码,实现会话恢复(这两种方法 - 这在负载平衡网站上会变得复杂)。 Ssllabs runs an excellent https tester检查您的设置Mozilla has some great documentation and advice,或者您可以查看my own blog post on this

关于您是否在终点(代理/负载均衡)终止https,这非常取决于您。是的,如果再次重新加密到https以连接到您的实际服务器,将会有性能损失。大多数代理服务器还允许您将https流量传递到主服务器,因此您只需解密一次,但您会丢失Web服务器日志中的原始IP地址,这可能很有用。这还取决于您是否直接访问您的Web服务器?例如,在我的公司,我们不会对内部流量进行负载均衡,因此我们也会在Web服务器上启用https,并使LoadBalancer重新加密以连接到该服务器,以便我们可以通过https查看该站点。

其他需要注意的事项:

您可以在迁移过程中看到搜索引擎优化。确保您重定向所有流量,告知Google Search Console您的首选网站(http或https),更新您的站点地图和所有链接(或使其相对)。

您需要了解不安全的内容问题。所有资源(例如css,javascript和图像)都需要通过https提供,否则您将获得浏览器警告并拒绝使用这些资源。 HSTS可以为browsers that support HSTS个人提供您自己域名的链接,CSP也可以提供帮助(报告或自动升级它们 - for browsers that support upgrade insecure requests)。

转移到https-only确实需要花费一些力气,但它已经过了一段时间,之后它会使您的网站比试图维护同一网站的两个版本更容易管理。网络正在越来越多地转向https - 如果您已经(或计划拥有)登录区域,那么您别无选择,因为您应该100%不使用http。谷歌对https网站的排名略有提升(虽然它显然很小,所以不应该是你移动的主要原因),甚至还谈到了积极展示http网站的不安全感。最好能够领先IMHO并立即采取行动。

希望这很有用。