如何对Web服务器进行飓风级防御
万一你的网站被DDOS飓风式攻击,你会怎么办?笔者以经验告诉你,这里的每一层都起着保护网站的作用。如果您宁愿拥有如何在单台服务器上维持大量流量的版本,则可以:
专用硬件服务器,无共享主机
千兆上行链路处理突发流量
用大量RAM清漆缓存
插件轻WordPress安装
通过WordPress/Jetpack的离线统计
Cloudflare作为CDN
现在,让我们来看看细节。

托管和软件
从硬件开始,WEB最好存在于专用物理服务器上,而不是虚拟专用服务器(VPS)。这不是共享主机设置,它不是基于云的。该服务器配备四核至强E3-1230CPU,16GB内存和镜像R1固态硬盘。它通常运行在100Mbps的上行链路上,但是一旦风暴流量可能发生变化,我们就会抢先将其升级到1Gbps上行链路。额外的容量对于处理Eric和他的工作人员的新帖子的巨大爆发量非常重要。
该机器运行UbuntuServer16.04LTS,并且是“非托管”的,即没有安装cPanel或其他“简单模式”管理工具。这可以最大限度地减少服务器的攻击面,并有助于节省资源。为了运行我的托管站点,已安装的软件保持在必要的最小应用程序集内。

服务器堆栈的两大目标是让所有托管站点使用HTTPS,并让所有托管站点利用缓存;这提出了一些鸡与鸡的问题,因为缓存加密流量比缓存未加密流量复杂得多。原因是加密的流量是完全被加密的。同一页面的两个加密副本看起来像不同的随机噪声块。这对高速缓存提出了挑战,它依赖于存储一个副本并反复提供。
对付它的办法是做加密以上的高速缓存层。这样,Web服务器仍然可以缓存内容并通过HTTPS加密。就缓存而言,该网站只是运行普通的HTTP。

实际上,我通过使用HAProxy终止所有站点的SSL/TLS连接来实现此目的,这是一个七层感知负载平衡器应用程序。HAProxy监视TCP端口443上的传入HTTPS连接,读取SNI信息,为请求的站点提供适当的SSL/TLS证书,并执行SSL/TLS握手,然后将连接沿着堆栈传递给Varnish,缓存应用程序。另外,HAProxy还会侦听TCP端口80上的传入HTTP连接,并将其重定向到端口443,从而将所有流量强制转换为HTTPS。
HAProxy下面是秘密武器:清漆。Varnish是一种反向代理和缓存应用程序,旨在直接从RAM中提供静态资产,这比直接向文件系统层提供服务要快得多(尽管这里有一个全面的讨论兔子洞,当你在Linux的页面缓存机制中混合使用时,文件真的存在)。以下是缓存如何工作的简短版本,以及它为什么帮助SpaceCityWeather。当WordPress提供页面时,通常该页面是由WordPress应用程序动态生成的。通常,每次从WordPress请求页面时(无论是博客的首页还是帖子的页面或类别页面或任何其他页面),该页面将从各种元素中以编程方式从头开始组装,并且为每位访客提供热和新鲜的服务。想想WordPress就像一个面包师,忙着在厨房做牛角面包。每一位参观者都会得到自己特别为他们制作的温暖,酥脆的羊角面包。

这意味着当你的WordPress网站有很多流量时,面包师会变得非常忙碌。一条线形成。人们不得不等待他们的羊角面包。谁喜欢等羊角面包?有时你现在需要一个牛角面包。添加像Varnish这样的缓存应用程序意味着面包师只需制作一个牛角面包。那个牛角面包还需要一些时间才能制作,但一旦制成,面包师就可以将它放入一个神奇的羊角面包复制盒。按下按钮后,盒子立即(并非瞬间,但非常,非常快)弹出一个新月形面包的副本。只要人们只需要那种牛角面包,面包师就可以按下按钮,递出牛角面包,然后继续帮助下一位顾客。
当然,魔术盒不能制作不同的羊角面包。面包师仍然必须这样做。但贝克只需要花费的时间,使一个东西,然后魔术盒(几乎)可以立即发送给任何人谁想要它的那个副本,让自由地做其他的东西面包师。对于太空城天气,Varnish处理了绝大多数流向服务器的流量,因为大多数人想要查看网站的首页或最新的更新帖子。因为从缓存中提供服务的对象比从头开始服务要快得多(从服务器负载的角度来看,缓存中服务的内容几乎是“免费的”),因此Varnish是允许SpaceCityWeather扩展到多于一个的关键组件之一通常的日常负载的100倍,而不会被要求服务的请求数量所淹没。

当然,Varnish并不是镇上唯一的缓存游戏,甚至没有关闭。Nginx本身有一个很好的缓存机制。关于Nginx或Varnish是否是任何给定站点的更适合的缓存层,都有一个单独的辩论-两者都是高性能的,但是在功能和配置方面存在差异。我更喜欢(至少现在)坚持使用光油,以利用具有清晰定义的图层的堆栈,这可以使故障排除问题更容易,因为问题通常是分区的。另外,经过多年使用光油后,我很合理地习惯了它的怪癖和古怪。
提示你的服务器
但是如果你没有任何东西需要服务,世界上所有的缓存都无法帮到你,所以一个强大的Web服务器应用程序是必需的。SpaceCityWeather以及服务器上的所有其他站点都由Nginx提供支持,Nginx是一款高性能,事件驱动的Web服务器应用程序,我已经为此编写了广泛的应用程序。
Nginx是当前使用的三种最流行的Web服务器应用程序之一,以及Apache和Microsoft的IIS。它快速而广泛的使用,这意味着它适用于很多目的,关于它配置的每个方面的Nginx专用教程都遍布在Web上。作为实际的“服务器”应用程序,Nginx提供了WordPress应用程序和其他堆栈之间的链接;它还提供WordPress的“静态资产”(像图像和其他文件不经常更改的东西),而不必打扰WordPress。

WordPress是一个应用程序,这意味着它必须在某些方面运行。更准确地说,WordPress的PHP文件需要运行在Web服务器上的PHP解释器或进程管理器来解析和执行它们包含的代码。对于这项任务,我们使用PHP-FPM,并进行了一些性能调整(主要是RAM和工作人员数量)以及PHP7。PHP7通常比仍然常见的PHP5快得多,并且当您每秒提供几十或几百页时,速度就很重要。我对PHP做了一些调整,尽管它对空间城市天气无关紧要-确保PHP会话存储在memcached而不是磁盘上。在拥有大量登录用户的系统上,这可以缓解一些IO瓶颈。
WordPress本身
由于WordPress作为博客平台的普及程度非常高,因此对于如何调整WordPress性能的建议无处不在。如果您正在运行一个高度定制的WordPress网站,您可能需要调整深度以适应杂草,以确保其在负载下的高性能。幸运的是,除了应用主题外,Eric并没有选择在SpaceCityWeather上做太多的定制。这种配置选择使得调整起来相对简单。
如果您搜索“WordPress性能”,您可能会看到的第一件事是建议安装WPSuperCache或W3TotalCache等一些流行的WordPress插件之一。这些插件确实有帮助(尤其是W3TotalCache,它与Varnish和其他缓存应用程序很好地协作),并且使用它们是一种选择;不过,我选择避开它们的使用,而是将清漆缓存作为我单一的主要缓存解决方案。再一次,这是因为我更喜欢把我的堆栈中的图层分开清晰-每个地方都有一个地方,一切都在它的位置。(来源:黑客周刊,欢迎分享)
如何对Web服务器进行飓风级防御的更多相关文章
- C# web服务器被webbench攻击及目现采用的防御措施
web服务器连续两次出现CPU达到100%的情况,第一次还想着是升级时,哪个地方写错了,有死循环,最后重启了三次服务器才好. 但事后分析代码,没有死循环的可能,于是在第二次又出现CPU达100%时,仔 ...
- 简单总结几种常见web攻击手段及其防御方式
web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...
- 简单地总结几种常见web攻击手段及其防御方式
web攻击手段有几种,本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS XSS 概念 全称是跨站脚本攻击(Cross Site Scr ...
- 几种常见web攻击手段及其防御方式
XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS web安全系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 XSS 概念 全称是跨站脚本攻击(Cross ...
- 总结几种常见web攻击手段及其防御方式
本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS web安全系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 ...
- 企业级Web服务器安全主动防御措施
篇一 : 企业级Web服务器安全主动防御措施 Web服务器现在已经成为了病毒.木马的重灾区.不但企业的门户网站被篡改.资料被窃取,而且还成为了病毒与木马的传播者.有些Web管理员采取了一些措施,虽然可 ...
- 闲来无聊,研究一下Web服务器 的源程序
web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...
- 使用 Nodejs 搭建简单的Web服务器
使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...
- Ubuntu下利用Mono,Jexus搭建Asp.Net(MVC) Web服务器
最近在Ubuntu上搭建了Asp.Net的Web服务器,其中遇到很多问题,整理一下思路,以备后用. 搭建环境以及配套软件 Ubuntu: 11.10 Mono:3.0.6 下载地址(http://do ...
随机推荐
- IntelliJ常用配置备忘
前言 最近IntelliJ又由于自己的骚操作给弄崩溃了,导致之前弄的一大波配置又找不到了,十分蛋疼的又要开始重头开始弄环境.很多之前精心搞过的配置又都记不住了,为了防止以后出现这种情况,这里就把我日常 ...
- 使用ZeroTier搭建大局域网利用VNC远程桌面
ZeroTier One.msi VNC Server 6.4.1 VNC Viewer 6.19.325 Network ID 83048a0632e88e16
- Linux安装nslookup命令
做DNS的人都知道nslookup命令是做什么用的,windows系统自带的.但是linux系统是不自带这个命令的,需要人手动安装.如果您不记得这是哪个软件包提供这个命令的话,那您还真会有些麻烦了.下 ...
- such as, for example, include和contain
such as 后接动词,通常用动名词,有时也可用动词原形 for example 后接动词,用动名词 include vt. 包含,包括 后接动词,用动名词 英英: If one thing inc ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_3_字符串的常量池
字符换是可以共享使用的,那么怎么去共享使用呢 三种方式去创建字符串.然后三种分别进行比较 3的地址和1.2的地址不一样 在堆里面有一块空间叫做字符串常量池,从jdk1.7开始.字符串常量池在堆中 字符 ...
- shell脚本一一项目5
主题:一键查看占用内存.cpu高的进程 echo "----------------cpu top 10 list----------------"ps -eo pid,pcpu, ...
- delphi SetWindowPos改变窗体位置和状态
http://blog.163.com/yuanliaofan@126/blog/static/1730690722012534428814/ delphi SetWindowPos改变窗体位置和状态 ...
- js(javascript)取float型小数点后两位数的方法
以下我们将为大家介绍 JavaScript 保留两位小数的实现方法:四舍五入以下处理结果会四舍五入: ? 1 2 var num =2.446242342; num = num.toFixed(2); ...
- python爬虫——爬取淘票票正在热映电影
今天正好学习了一下python的爬虫,觉得收获蛮大的,所以写一篇博客帮助想学习爬虫的伙伴们. 这里我就以一个简单地爬取淘票票正在热映电影为例,介绍一下一个爬虫的完整流程. 首先,话不多说,上干货——源 ...
- git.ZC_命令积累
1.删除文件 git rm 想要删除的文件的名字及其后缀 git commit -m "对本次提交的描述信息" git push 删除文件夹,执行命令: git rm 想要删除的文 ...