使用Traffic Server组建高性能的CDN集群

1, CDN架构简介

CDN全称为Content Distribution Network, 内容分发网络。CDN可以极大地提升网站的访问速度,提升网站性能,给网站加速。

在无CDN架构中,用户直接使用浏览器请求服务器上的资源。如果访客量大,服务器可能无法响应这么多的请求。同时,如果服务器在国外,那么国内用户访问起来就非常慢。

CDN节点服务器部署在用户和网站服务器之间。用户访问的时候,可以直接从离自己距离最近、速度最快的服务器上请求网站资源。如果CDN服务器上已经缓存了用户请求的内容,就会直接从CDN服务器上把内容传递给访客;如果没有缓存或者缓存过期,才会再由CDN节点服务器从源站取回内容。这样,就能够提升访客的访问速度,且提升服务器响应性能。一个最简单的CDN网络可以用下图来表示。

本文将部署在Ubuntu 20.04 LTS 64bit操作系统中,其他操作系统的部署流程没有太大差异。本教程中,CDN节点服务器的测试环境为单核,1 GB内存的VPS (实测在512 MB内存的VPS上也可以完美运行). 本文假设源站域名为qing.su, 源站IP为88.88.88.88. 在开始部署CDN之前,请按照上一篇教程(https://www.homedt.cn/2406.html)的第二部分内容安装好Traffic Server程序。下面的内容将直接从配置开始。

接下来各部分中,第2, 3节是必须设置的;第4-9节是可选的;第10节CDN服务器上的DNS解析与第11节均衡负载,仅在源站有多个服务器的情况下才需要设置。

现在,开始教程。

2, 设置映射规则

访客使用域名访问了CDN节点之后,如果CDN节点没有储存访客请求的内容,就需要从源站获取内容。因此,需要设置映射规则 (mapping rules),使得CDN能够正确地与源站通讯。这里,我们有两个方案:正向代理与反向代理。尽管两者均可完美实现CDN功能,但是为了安全性考虑,如果您只用一层CDN, 那么可以只用反向代理。如果您使用多层CDN, 那么外层(用户直接访问的节点)应该使用反向代理,内层(所有不和用户发生直接交互的节点)应该使用正向代理。

(1) 使用正向代理 (Forward Proxy)

Apache Traffic Server是一个全功能的代理/缓存/CDN程序,支持正反双向代理与透明代理。因此,我们可以使用正向代理模式来配置CDN与源站交互(你可以把正向代理的CDN服务器理解为一台带缓存的Windows远程桌面,你登录到远程桌面上访问源站)。正向代理与反向代理均可以实现高速缓存,在性能上没有差异。

配置records.config文件,设置下面几条记录的值:

CONFIG proxy.config.reverse_proxy.enabled INT 0
CONFIG proxy.config.url_remap.remap_required INT 0
CONFIG proxy.config.url_remap.pristine_host_hdr INT 1

这样,无需配置mapping rules,服务器即可通过正向代理的方式访问源站。设置为正向代理模式后,服务器目前还不知道我们源站的IP地址。这里有三种方法:1, 我们可以直接更改服务器本地的/etc/hosts文件指明源站IP (最简单且速度最快); 2, 可以按照本文第10节的方法指明源站IP; 3, 可以自己搭建DNS服务器,设置DNS记录。多个源站直接添加多条记录即可。如果您的一个源站有多台服务器,请参考本文第10节与第11节的设置。

出于安全性的考虑,不要将正向代理节点部署在CDN架构的最外层节点

(2) 使用反向代理 (Reverse Proxy)

CDN服务商的外层节点一般都使用反向代理的方式。

首先,编辑records.config文件,开启反代模式:

CONFIG proxy.config.reverse_proxy.enabled INT 1
CONFIG proxy.config.url_remap.remap_required INT 1
CONFIG proxy.config.url_remap.pristine_host_hdr INT 1

然后我们就可以配置映射规则了。这里我们需要再次强调一下,如果您的源站完全被CDN覆盖,那么不建议您在源站上开启SSL, 因为这完全没有必要,反而会额外增加源站负载。您只需要在CDN服务器上配置SSL即可。

编辑文件remap.config, 如果源站没有开启SSL, 添加下面的内容:

redirect http://qing.su/ https://qing.su/
map https://qing.su/ http://88.88.88.88:80/

如果源站开启了SSL, 则添加下面的内容:

redirect http://qing.su/ https://qing.su/
map https://qing.su/ https://88.88.88.88:443/

请注意,IP地址之后的端口号不可省略。多个源站则添加多条记录即可。

如果您的一个源站有多台后端服务器,请参考本文第10节与第11节的设置。

3, 设置缓存规则

缓存了源站的文件,才能让访客的访问速度得到提升,否则如果只反代而不缓存,那么访客的每次请求都要回源,访问速度反而会下降。

编辑文件records.config, 添加下面的内容:

CONFIG proxy.config.http.cache.http INT 1
CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
CONFIG proxy.config.http.normalize_ae_gzip INT 1
CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1
CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
CONFIG proxy.config.http.cache.when_to_revalidate INT 0
CONFIG proxy.config.http.cache.required_headers INT 2
CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1

这里我们设置了基本的缓存属性,比如忽略客户端no cache请求,开启gzip压缩,等等。接下来,对各文件类型设置缓存期限。编辑文件cache.config,添加下面的行:

url_regex=.* suffix=js ttl-in-cache=5d
url_regex=.* suffix=css ttl-in-cache=5d
url_regex=.* suffix=html ttl-in-cache=5d
url_regex=.* suffix=xml ttl-in-cache=5d
url_regex=.* suffix=ts ttl-in-cache=5d
url_regex=.* suffix=jpeg ttl-in-cache=5d
url_regex=.* suffix=mp4 ttl-in-cache=5d
url_regex=.* suffix=zip ttl-in-cache=5d
url_regex=.* suffix=gif ttl-in-cache=5d
url_regex=.* suffix=jpg ttl-in-cache=5d
url_regex=.* suffix=swf ttl-in-cache=5d
url_regex=.* suffix=m3u8 ttl-in-cache=5d
url_regex=.* scheme=https ttl-in-cache=1h
url_regex=.* scheme=http ttl-in-cache=1h

您可以按照自己的需求自行设置。

对于频繁请求的小文件,可以将其储存于系统内存中,加快读取速度。编辑文件records.config, 设置下面的内容:

CONFIG proxy.config.cache.ram_cache.size INT 200M
CONFIG proxy.config.cache.ram_cache_cutoff INT 4194304
CONFIG proxy.config.cache.ram_cache.compress INT 1

上面三行中,我们在内存中设置了200MB空间用来存储文件大小在4MB以内的小文件,且启用了内存压缩。

4, 缓存储存空间及缓存分区

在上一节中,我们设置了缓存规则。这一节我们设置缓存大小,并开启缓存分区。

编辑文件storage.config, 设置缓存大小。比如,我这里设置为2 GB:

var/trafficserver 2048M

接下来我们设置缓存分区。Traffic Server支持将储存空间划分为不同大小的分区,然后可以给不同的源站设置不同的缓存大小。同时,不同的缓存分区可以并行储存读取,加快缓存读取速度。

编辑文件volume.config, 我们这里将缓存分为6个分区:

volume=1 scheme=http size=5%
volume=2 scheme=http size=5%
volume=3 scheme=http size=15%
volume=4 scheme=http size=15%
volume=5 scheme=http size=25%
volume=6 scheme=http size=35%

然后编辑hosting.config文件,为域名指派不同的缓存分区:

domain=qing.su volume=1,2,3,4,5,6
domain=hostloc.com volume=1,2,3,4

5, 安装SSL证书,开启OCSP装订与HTTP/2

访客直接与CDN服务器发生交互,因此我们需要在CDN服务器上安装SSL证书。

首先,我们要开启SSL支持。编辑records.config, 找到含有server_ports的这一行,修改成如下:

CONFIG proxy.config.http.server_ports STRING 80 443:proto=http2;http:ssl

在这个设置中,我们开启了SSL, 并为https开启了HTTP/2传输。可以用浏览器查看是否启用成功,如下图绿框里的h2协议码。

如果您使用了最新版本的Traffic Server (10.0), 您还可以设置QUIC-HTTP/3.  由于本文仍然用的是老版本的Traffic Server, 无法设置QUIC-HTTP/3, 因此就不做过多介绍了,具体的设置方法请参考官方文档

指明SSL证书存放的文件夹:

CONFIG proxy.config.ssl.server.cert.path STRING /etc/trafficserver/ssl/
CONFIG proxy.config.ssl.server.private_key.path STRING /etc/trafficserver/ssl/

然后我们把证书存放在/etc/trafficserver/ssl/文件夹中。假设私钥文件为qing.su.key, 证书文件为qing.su.crt, CA中间链证书文件为qing.su.ca-certs.crt, 那么我们编辑ssl_multicert.config, 添加下面的行:

dest_ip=88.88.88.88 ssl_cert_name=qing.su.crt ssl_key_name=qing.su.key ssl_ca_name=qing.su.ca-certs.crt

就设置好了SSL证书。

如果您使用Let’s Encrypt证书,那么我建议您开启OCSP装订,原因是该证书CA的OCSP证书被墙了,会导致国内访问速度慢。开启OCSP装订很简单,编辑文件records.config, 设置如下的行:

CONFIG proxy.config.ssl.ocsp.enabled INT 1

这样就开启了OCSP装订。OCSP缓存周期等参数可以保持默认。

6, 自定义HTTP Header

在Apache Traffic Server中,我们可以方便地更改响应的Headers.  这里需要用到header_rewrite插件。

首先,编辑plugin.config文件,加载header_rewrite插件:

header_rewrite.so /etc/trafficserver/header_rewrite.config

这里,我们定义了header_rewrite插件的配置文件名,header_rewrite.config.  编辑该文件,按您的个人需求来修改,比如:

cond %{SEND_RESPONSE_HDR_HOOK} [AND]
cond %{HEADER:server} =ATS/8.0.8
set-header server "shc-cdn-server"

这里,我们将header中包含ATS/8.0.8字符串的server字段值修改为”shc-cdn-server”.  可以用浏览器查看修改的headers.

该插件具体的语法可以参考官方文档

7, 配置VIA Header

Via Header是中间代理添加的信头标识,具体介绍可以看这里。Traffic Server支持via header, 如果我们开启了Via Header功能,则Traffic Server会在所有请求的应答中添加一个字符串,用来提供CDN服务器处理该请求时的状态信息,比如缓存是否命中等。通过解读Via信头,我们可以用来调试CDN服务器。

开启Via信头很简单。编辑records.config, 修改下面的行:

CONFIG proxy.config.http.insert_request_via_str INT 1
CONFIG proxy.config.http.insert_response_via_str INT 2

如果将第二行的值设置为3,则会给出更详细的24位VIA信头;如果设置为2,则会给出6位信头。一般来说,默认的6位Via信头已经能够提供足够多的信息了。开启了Via信头之后,如何分析呢?我们举下面几个例子。请注意图中绿框框起来的部分。

如上图,绿框框起来的部分就是Via header值。图中的值为[cHs f ].  Traffic Server包含了traffic_via命令行工具,可以帮助我们解码。执行:

traffic_via '[cHs f ]'

即可看到解码后的含义:

这里可以看到,该页面的请求命中了缓存,因此无需从源站获取内容。

再来看这张图,

Via header值为[cMsSfW], 解码后得到下图的解释:

可以看到,该请求没有命中缓存,因此我们的CDN服务器从源站获取了请求的内容反馈给访客,并且将该内容写入了缓存

还有一种常见的情况,如下图:

Via header值为[cSsSfU].  解码后得到下图的解释:

可以看出,该请求命中了缓存,但是缓存已过期。因此,CDN服务器从源站获取了请求的内容,反馈给访客,并且更新了CDN服务器上的缓存

如果您开启了24位长Via信头,那么您需要使用这个在线工具来解码:http://trafficserver.apache.org/tools/via.  系统中提供的traffic_via命令行工具在解码24位Via header时会报错。

一般来说,Via header是在调试、配置CDN时使用的工具。当您的CDN服务器完全搭建好后,建议您关闭Via header功能。

8, 日志与状态监测

Traffic Server生成的日志在/usr/local/var/log/trafficserver目录。可以使用tail -f实施监测日志变化:

tail -f /usr/local/var/log/trafficserver/manager.log
tail -f /usr/local/var/log/trafficserver/diags.log
tail -f /usr/local/var/log/trafficserver/error.log

Traffic Server提供了traffic_logstats工具,让我们更直观地了解CDN服务器的工作状态。比如我们源站的IP为88.88.88.88, 那么我们可以执行:

traffic_logstats -o 88.88.88.88:443

命令执行的结果如下。系统会生成非常详细的日志报告,包含所有的服务器运行状态(命中情况,错误分析,DNS解析命中,等等……您可以自行尝试)。如下图。

上图中,我们的CDN服务器收到的请求中有200多万次命中了,一千多次没有命中,还有900次错误(都是压力测试的时候产生的)。

另外,也可以使用traffic_top命令,使用类似于Linux Top指令一样的界面查看CDN服务器运行状态。执行:

traffic_top

效果如下图所示:

9, 惊群效应与拥塞控制

做CDN一般都需要考虑避免惊群效应 (Thundering Herd Effect) 的出现,尤其是节点数较多的情况,否则很可能在某些时候给源站产生非常大的突发请求,导致源站宕机。

Traffic Server提供的运作机制可以避免惊群的出现。编辑records.config文件,添加下面的行:

CONFIG proxy.config.cache.enable_read_while_writer INT 1
CONFIG proxy.config.http.background_fill_active_timeout INT 0
CONFIG proxy.config.http.background_fill_completed_threshold FLOAT 0.000000
CONFIG proxy.config.cache.max_doc_size INT 0
CONFIG proxy.config.cache.read_while_writer.max_retries INT 10
CONFIG proxy.config.cache.read_while_writer_retry.delay INT 50
CONFIG proxy.config.http.cache.max_open_read_retries INT 5
CONFIG proxy.config.http.cache.open_read_retry_time INT 10

还可以开启服务器的拥塞控制,更好地应对高流量并发:

CONFIG proxy.config.http.congestion_control.enabled INT 1

我们使用loader.io对一台1核1GB内存的轻量VPS搭建的CDN节点进行了压力测试,持续并发2000个访客并不间断地向服务器发送请求(一分钟之内共发送了38万个请求),全部成功。此时CDN节点服务器的负载仅在40%左右。由于达到了VPS服务商的网络带宽与iops限制,因此无法进一步提升并发量来测试了。(测试链接:https://bit.ly/32xD1nI)因此,使用这单个1核1GB VPS一天处理几万个UV还是很轻松的。

10, CDN服务器上的DNS解析

Traffic Server提供了HostDB功能,我们可以将其理解为仅供Traffic Server使用的/etc/hosts文件。区别于/etc/hosts文件的地方是可以使用很多参数来控制HostDB, 实现服务器上的DNS缓存与解析。

HostDB的主要作用是缓存源站域名的DNS请求。实际上,如果您的源站只有一台服务器,那么如果你按照我上面的配置来操作的话并不需要用域名的方式来请求源站,因此无需使用HostDB功能。仅当您的源站有多台服务器的时候,才需要使用HostDB功能。

编辑records.config文件,指明一个hostdb文件的位置:

CONFIG proxy.config.hostdb.host_file.path STRING /etc/trafficserver/hostdb.conf

然后按照hosts文件的格式编辑hostdb.conf文件(IP hostname一行一条记录)。

我们还可以设置轮询:

CONFIG proxy.config.hostdb.strict_round_robin INT 1

其他设置,比如TTL, 缓存更新频率,轮询频率等设置,请参考官方文档,这里不做过多介绍了。

11, 均衡负载

Traffic Server是功能全面的CDN程序,支持设置均衡负载(Load Balancing).  简而言之,如果您的源站本身就有多台服务器,那么可以通过配置CDN, 实现回源时均衡负载,这样不会给单一源站带来过大的压力。

配置均衡负载有三种方法: 1, 是使用Balancer插件; 2, 使用父级代理的方式; 3, 使用上一节介绍的HostDB。我们这里仅介绍使用第二种方法。使用插件的方法较简单,但是由于可以被父级代理的功能完全代替,该插件将在未来版本的Traffic Server中被淘汰,因此我这里就不做介绍了,如果感兴趣可以自行查看

我们假设qing.su的源站有三个IP, 77.77.77.77, 88.88.88.88, 99.99.99.99.  为了实现均衡负载,在配置映射规则(第2节)时,我们需要用hostname而不是IP地址的方式指明源站地址。因此,在remap.config中,我们可以这样添加规则:

map https://qing.su https://origin.qing.su

这里,origin.qing.su是一个不存在的,我们随便分配的子域名。然后,编辑records.config, 开启父级缓存:

CONFIG proxy.config.http.parent_proxy_routing_enable INT 1

最后,在parents.config文件中指明源站IP以及均衡负载的IP响应规则:

dest_domain=origin.qing.su parent="77.77.77.77:443|2.0, 88.88.88.88:443|3.0, 99.99.99.99:443|5.0" parent_is_proxy=false round_robin=strict

在上面这个例子中,我们使用这三个IP地址开启了轮询均衡负载,并且分配了权重(20%, 30%, 50%)。其他的配置规则可以参考官方文档

到这里,一台CDN服务器就基本设置完毕了。等您把所有节点全部设置完毕后,您需要设置域名的DNS解析。如果您不需要商用,则直接在DNS服务商处将您的域名按照线路解析到不同的CDN节点上即可,或者设置轮询(Round Robin)。若您需要商用,建议您自行搭建Geo DNS, 以便用户设置解析。以后我们也会介绍Geo DNS的部署。这里,我们直接使用现成的免费DNS服务器(国内推荐阿里云,国外推荐Route53)就可以了。

综上,我们使用Traffic Server搭建好了CDN网络。我们详细说明了映射规则与缓存规则的配置,并介绍了缓存分区、修改信头、配置SSL、状态检测、均衡负载、拥塞控制与处理惊群等具体细节。Traffic Server拥有完整详细的产品手册,如果您想了解更多,请点击参考官方文档

其他的功能,比如CDN分层,众多插件的使用,Lua编程模块等等,这里就不做太多介绍了。另外,如果您需要商用Traffic Server CDN, 你可以考虑安装开源免费的主控端Traffic Control.  Traffic Control用于控制Traffic Server搭建的CDN服务器集群,拥有完整的图形界面,用户管理,DNS, 签发SSL, 均衡负载,等等一切你能想到的CDN服务商需要的功能,您可以自行研究。

原文链接为https://qing.su/article/traffic-server-cdn-cluster.html

使用Traffic Server实现高性能反向代理

使用Traffic Server实现高性能反向代理

Apache Traffic Server (亦称作Traffic Server, ATS, TS) 是一个高性能双向代理, 缓存, CDN服务器。今天,我来介绍如何用Traffic Server简单方便地配置反向代理与缓存服务器,实现对任意网站的反向代理。下一篇文章,我将介绍如何使用Traffic Server搭建一个高效的CDN系统。

本文作者为香菇肥牛,原文链接为https://qing.su/article/traffic-server-reverse-proxy.html

1, Apache Traffic Server简介

Apache Traffic Server由Yahoo于2009年开源,经过现在已经成为了非常成熟的代理/缓存/CDN系统。早在2009年,雅虎使用Traffic Server就可以用150台服务器实现每天400 TB的高速流量分发。经过多年的发展,ATS已经用于非常多的商业CDN分发与大型网络。Traffic Server与Nginx, Varnish三者几乎称霸了世界上所有CDN运营商,而Traffic Server又是这三者之中使用量最大的。与Nginx相比,Traffic Server拥有同样优异的性能显著的更多的功能,更丰富的接口,以及高度自定义的配置。与Varnish相比,Traffic Server对于高并发高负载的处理更为出色。

使用Traffic Server的CDN/大型网络有Apple, Comcast, Yahoo, Akamai, 以及国内的又拍云等。Traffic Server, Nginx, Varnish各自的优缺点可以查看这个讨论:https://www.bizety.com/2016/01/07/nginx-vs-varnish-vs-apache-traffic-server-high-level-comparison/

2, 安装Traffic Server

安装Traffic Server之前,请确保您的VPS/独服上没有安装其他的Web服务器程序,否则会发生冲突。本文的操作环境为Ubuntu 20.04 LTS 64 bit. 其他操作系统的安装与配置方法类似。Traffic Server将使用编译方式安装,当前版本为8.0.8。若您使用系统自带的包管理器安装,则版本可能较老,请注意设置上可能会有所差异。

请前往https://www.apache.org/dyn/closer.cgi/trafficserver下载最新版本的安装包。

wget https://mirrors.ocf.berkeley.edu/apache/trafficserver/trafficserver-8.0.8.tar.bz2
tar xjf trafficserver-8.0.8.tar.bz2

安装必要的依赖环境与编译器:

apt install automake libtool pkg-config libmodule-install-perl gcc g++ libssl-dev tcl-dev libpcre3-dev libcap-dev libhwloc-dev libncurses5-dev libcurl4-openssl-dev flex autotools-dev bison debhelper dh-apparmor gettext intltool-debian libbison-dev libexpat1-dev libfl-dev libsigsegv2 libsqlite3-dev m4 po-debconf tcl8.6-dev zlib1g-dev

编译安装Traffic Server:

cd trafficserver-8.0.8
./configure --enable-experimental-plugins
make
make install

其中,–enable-experimental-plugins参数这里可以不加。

安装完毕后,为配置文件创建一个符号链接,便于管理:

ln -s /usr/local/etc/trafficserver /etc/trafficserver

执行完毕后,所有的Traffic Server配置文件都在/etc/trafficserver目录中。我们接下来需要配置这个目录中的多个文件。

3, 配置URL映射规则

为了实现反代,我们需要配置URL映射规则,这样Traffic Server就能按照我们的指令来进行替换。

下面我们将用proxy.qing.su和origin.qing.su这两个域名为例。假设源站域名为origin.qing.su, 源站在另一台服务器上。我们想用proxy.qing.su这个域名来反代源站origin.qing.su.

编辑文件 records.config, 找到下面这行:

CONFIG proxy.config.http.server_ports STRING 8080 8080:ipv6

将其修改为:

CONFIG proxy.config.http.server_ports STRING 80 443:ssl

如下图所示:

再找到下面这行,将0改为1:

CONFIG proxy.config.url_remap.pristine_host_hdr INT 0

如下图所示:

然后编辑文件remap.config. 所有的反代/映射规则都写在这个文件中。在文件末尾添加下面的行:

redirect http://proxy.qing.su/ https://proxy.qing.su/
map https://proxy.qing.su/ https://origin.qing.su/
reverse_map https://origin.qing.su/ https://proxy.qing.su/
map / https://origin.qing.su/

保存退出即可。

4, 配置缓存规则

通过缓存的配置,我们能够节省服务器资源,且使得访问速度得到提升。编辑文件records.config, 设置下面的行:

CONFIG proxy.config.http.cache.http INT 1
CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
CONFIG proxy.config.http.normalize_ae_gzip INT 1
CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1
CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
CONFIG proxy.config.http.cache.when_to_revalidate INT 0
CONFIG proxy.config.http.cache.required_headers INT 2
CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1

其中的参数设置我将在下一篇搭建CDN的教程中具体介绍。对于一个简单高效的反向代理实例,上面这些设置一般能够满足需求。

再编辑文件storage.config. 在这里我们可以设置分配给服务器用来储存缓存内容的空间。我们这里设置为2 GB.

var/trafficserver 2048M

5, 配置SSL证书

我们可以在Traffic Server中配置SSL证书,实现网站的安全访问。如果您反代的是自己的源站,那么我建议您去掉源站的SSL证书,这样可以减轻源站的负载。源站是否配置SSL对于前端反代站的设置没有任何影响。

首先,我们新建一个目录,用于储存所有的SSL证书。

mkdir /etc/trafficserver/ssl
chown nobody /etc/trafficserver/ssl
chmod 0760 /etc/trafficserver/ssl

然后,将对应域名的私钥和证书放在这个文件夹中。如果您的反代站域名和源站域名一样(比如CDN),您可以直接复制源站的证书。如果不一样,您需要为反代站的域名申请SSL证书。我们假设反代站私钥地址为/etc/trafficserver/ssl/proxy.qing.su.key, 反代站证书地址为/etc/trafficserver/ssl/proxy.qing.su.crt.

编辑文件records.config, 指明SSL证书存放目录。添加下面的行:

CONFIG proxy.config.ssl.server.cert.path STRING /etc/trafficserver/ssl/
CONFIG proxy.config.ssl.server.private_key.path STRING /etc/trafficserver/ssl/

保存退出。然后编辑文件ssl_multicert.config. 添加下面的行:

dest_ip=88.88.88.88 ssl_cert_name=proxy.qing.su.crt ssl_key_name=proxy.qing.su.key

其中,88.88.88.88为源站IP. 如果您有多个源站IP, 就添加多行。如果想要匹配所有IP, 可以用通配符*来匹配。这样,我们就指明了每个源站对应的SSL证书的文件名。

6, 运行Traffic Server

每次修改配置文件后,需要重新载入配置文件,使得Traffic Server启用我们对配置文件做出的修改。

traffic_ctl config reload

载入配置文件的过程中您可能遇到下面这样的报错:

traffic_ctl: error while loading shared libraries: libtsmgmt.so.8: cannot open shared object file: No such file or directory

执行下面的命令即可:

ldconfig

如果载入配置文件的过程中遇到了下面这样的错误:

traffic_ctl: server start failed: [5] Error establishing socket connection.

这种情况一般是Traffic Server没有启用。您可以执行traffic_manager运行Traffic Server, 或者使用下面的命令运行:

trafficserver start

运行Traffic Server之后,访问我们的反代站网址,应该已经可以正常显示源站内容了。如果是一个动态网站,那么该站点的交互功能,比如表单、用户登录、评论等功能都应该可以正常使用了。比如,我随手用域名yaofan.shop反代了一下全球主机交流论坛的网站hostloc.com, 反代的站点和源站完全一样,可以正常注册,登录和评论。

综上,我们使用Apache Traffic Server轻松实现了对源站的反向代理,并配置了缓存系统和SSL证书。下一篇教程,我们将介绍使用Traffic Server实现CDN功能。如果您遇到任何问题,欢迎在这里留言和我讨论。

kangleCDN贝-高防高速CN2节点服务器

kangleCDN贝-高防高速CN2节点服务器

服务器租用联系QQ:28575315

提供CDN节点服务器租用,适合各类自建CDN系统部署,如kangleCDN贝等。

服务器有 高防型、大带宽型、亚太高速型 等多种选择。满足您的多样化需求。

可多台服务器组件内网互通,数据同步速度更快,且不占用公网带宽。

详询客服QQ:28575315

websocket流量CDN节点服务器,电信联通移动大带宽服务器

websocket流量CDN节点服务器,电信联通移动大带宽服务器

 

websocket服务器租用联系,联邦小项。QQ28575315

专业提供大带宽服务器租用

电信、联通、移动、多线BGP

带宽可选:10M、100M、200M、500M、1000M等,可根据需求配置带宽

自建机房,更低的价格,更快的售后,更稳定的服务器

 

移动

L5630*2/16G/1T/ 100M带宽 500元/月

L5630*2/16G/1T/1000M带宽 3000元/月

E5-2450L*2/32G/1T/ 100M带宽 600元/月

E5-2450L*2/32G/1T/1000M带宽 3500元/月

电信

L5520*2/16G/1T/20M带宽 400元/月

L5520*2/16G/1T/100M带宽 900元/月

联通

L5520*2/8G/500G/10M 200元/月

L5520*2/8G/500G/100M 500元/月

多线BGP

L5630*2/16G/240G(SSD)/100M带宽999元/月

 

以上为经典配置,更多配置联系QQ28575315咨询即可。

硬件可定制,硬盘等可以客户自己邮寄,免费安装

联邦小项,QQ28575315

 

websocket服务器,websocket大带宽,websocketCDN服务器,CDN节点服务器

 

国内G口服务器,独享带宽不限制流量,可做CDN节点服务器

国内G口服务器,独享带宽不限制流量,可做CDN节点服务器

提供国内G口服务器租用,独享带宽,随时跑满,不限制流量,无其他特别要求。

联系QQ28575315

移动G口服务器

E5-2450L*2/32G/1T SSD/1000M带宽 4000元/月

电信G口服务器

L5520*2/16G/1T/1000M带宽 9999元/月

以上是默认配置,更多配置加客服QQ咨询即可。

联邦在线携手中国移动给广大站长免费送CDN啦!

联邦在线联手中国移动通信有限公司为广大站长用户提供福利啦
现免费给使用南阳移动机房的用户提供免费、不限带宽、不限流量的移动网内CDN加速服务!

南阳机房服务器特价表:
L5630*2/16G/1T/20M 300元月
L5630*2/16G/1T/100M 700元月
L5630*2/16G/1T/1000M 6000元月

南阳机房介绍页面:https://www.homedt.cn/nyyd
咨询QQ:28575315

使用要求:

填写安全责任书(写上网址备案号),签字、盖章然后拍照发送给联邦在线客服即可!客服QQ:28575315

安全责任书下载:中国移动cdn用户网络信息安全责任书

网站访问优化之-服务器篇-使用内容分发网络(CDN)

用户与Web服务器的距离对响应时间有影响。在多个分布在不同地理位置的服务器上部署您的内容将使您的页面从用户的角度更快加载。但是你应该从哪里开始呢?

作为实现地理上分散的内容的第一步,不要尝试重新设计您的Web应用程序以在分布式架构中工作。根据应用程序的不同,更改架构可能包括艰巨的任务,如同步会话状态和跨服务器位置复制数据库事务。尝试缩短用户与内容之间的距离可能会延迟或不能通过此应用程序体系结构步骤。

请记住,80-90%的最终用户响应时间用于下载页面中的所有组件:图像,样式表,脚本,Flash等。这是性能黄金法则。而不是从重新设计应用程序体系结构的艰巨任务开始,最好先分散您的静态内容。这不仅实现了响应时间的更大缩短,而且由于内容交付网络的缘故,这更容易实现。

内容传送网络(CDN)是分布在多个位置的网络服务器的集合,以更有效地向用户传送内容。选择用于将内容递送给特定用户的服务器通常基于网络邻近度的度量。例如,选择网络跳数最少的服务器或响应时间最快的服务器。

一些大型互联网公司拥有自己的CDN,但使用CDN服务提供商(如Akamai Technologies,EdgeCast或level3)是具有成本效益的。对于创业公司和私人网站来说,CDN服务的成本可能会很高,但是随着目标受众的规模越来越大,变得更加全球化,CDN是实现快速响应的必要条件。在雅虎,将静态内容从其应用程序Web服务器移到CDN(如上所述的第三方以及雅虎自己的CDN)的属性将最终用户的响应时间提高了20%甚至更多。切换到CDN是一个相对简单的代码更改,将显着提高您的网站的速度。

图像优化如何减少页面加载时间

最近的Imperva Incapsula调查显示,消费者期望网站快速渲染,62%的用户只愿意等待五秒钟(或更少)来加载一个页面。只有4%的受访者表示愿意等待20秒以上离开您的网站。

在互联网曙光的时候,一个充满图像的网页可能会花费过多的时间在浏览器中渲染 – 如果它的图像不是以某种方式进行优化,通常是通过压缩。今天,图像压缩只是改进页面加载时间的一部分。

图像优化包括几种其他方法来优化图形以减轻页面,减少加载时间并减少对网络资源的负担 – 包括与移动数据计划相关的数据简化。

搜索引擎可能会评估网页排名时的页面加载时间。更快的加载页面获得更高的位置。反过来,这样优化的页面可以为更广泛的用户群体提供站点可见性,同时在点击页面链接后也增强他们的体验。

优化方法

您的网页布局和结构应该确定优化方法。这些可以包括使用光图像格式,减少图像大小并限制访问者浏览器加载所需的图形数量。

图像压缩 – 通用光栅文件格式为.JPG(.JPEG),.GIF和.PNG,后者是一种无损,非专利的格式,取代了.GIF。矢量文件格式(如.PDF,.SVG和.EPS)不是使用单个像素的集合,而是使用坐标和图形参数来构成比其栅格对应物更小的图像。
将光栅图像转换为矢量格式是减少页面渲染时间同时保持完整图像质量的一种方法。但最好保留给像几何图形这样的图形,不适合照片(后者提供复杂的细节)。

矢量图像 – 矢量图像,如.pdf,.ai,.eps使用坐标和图形参数来构建图像。矢量图像通常小于其光栅对应物。使用矢量图像替换光栅图像可减少页面加载时间,但不会降低图像质量。

这适用于几何形状和图形的图像,但不适合那些比较复杂的图像,例如照片。

图像缓存 – 在代理服务器上存储图像可以快速访问。调用图像缓存,大大提高了页面渲染速度。
代理缓存将映像文件的副本放在区域性存在点(PoP)服务器上。如果它们只驻留在您的原始服务器上,则更容易获得,访问者的浏览器中的图像渲染将再次加速。对于使用几个图像的网站,在给定时间内保持不变,并在页面之间共享(例如,企业品牌,页眉和页脚),代理缓存可能特别有利。

在访问者的浏览器中缓存图像今天也经常使用。它限制重复的HTTP请求,同时还减少显示给定图像所需的下载位数。

图像优化和CDN

自动图像压缩 – 使用内容传送网络(CDN)可让您的网站访问者享受图像优化的优势,而无需任何人员单独操作文件。您可以确定图像质量与页面呈现速度之间的平衡。
渐进渲染 – 高级CDN可以在浏览器中快速呈现每个图像的高像素化版本。在接下来的几个时刻,它被几个变种所替代,每一个都提供了更高的质量。访客的看法是减少了页面时间。

自定义规则和策略 – 功能齐全的CDN可以为为您的站点服务的所有代理服务器建立缓存策略。许多还允许您逐个设置规则,以及某些文件类型和文件组。
Incapsula CDN使用高级代理缓存来保存整个网站内容的副本 – 包括图像。拥有超过30个PoP策略性地位于世界各地,您的网站访问者由最接近他们的数据中心迅速提供内容。我们的自定义策略,快速缓存清除和传递规则可让您确定特定文件的缓存方法。