服务器测评网
我们一直在努力
广告
广告
广告
广告
广告
广告
广告
广告
广告

记录一次Apache Traffic Server部署

广告
广告

众所周知因为网络的原因,我们需要优化线路来保障网站的访问速度。由于各种原因直接将站点部署在优化线路的机子上并不合适,我们希望能够部署在海外的稳定、大流量、大宽带的机子上,这就需要使用有优化线路的机子做流量中转了。最简单的方法是直接用 nginx 反代,但出于性能考虑,我决定使用 Apache Traffic Server,下面来记录一次 Apache Traffic Server 部署过程。

由于穷,我只有一台 1H512M10G 硬盘的小鸡可以用来中转,不过这个配置也完全够了,撑得住。编译需要至少 1.5G 的内存,运行 512M 足矣,不过还是推荐多留出来 512M 内存以防万一。

我这小鸡系统是 debian10,想着反正是折腾,就装到 debian11 吧。(可跳过,仅个人折腾)

1. debian10 更新 debian11

首先更新系统包

apt update && apt upgrade -y
apt update && apt upgrade -y

然后更新 sources.list 文件,将 /etc/apt/sources.list 中的内容全部注释掉,在尾部写上

deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main

deb http://deb.debian.org/debian-security/ bullseye-security main
deb-src http://deb.debian.org/debian-security/ bullseye-security main

deb http://deb.debian.org/debian bullseye-updates main
deb-src http://deb.debian.org/debian bullseye-updates main

保存后执行

apt update && apt full-upgrade

这个过程需要一点时间,期间有几次需要手动操作,需要人盯着

升级完成后执行 reboot 重启

此时就已经升级好了,可以放心的去删除 apt 缓存

apt --purge autoremove
apt autoclean

第二步,才是真正的编译安装 Apache Traffic Server(重点)

2. 编译安装 Apache Traffic Server

首先去 https://trafficserver.apache.org/downloads 下载最新版的程序,我发文时版本是 9.1.1,执行

wget https://dlcdn.apache.org/trafficserver/trafficserver-9.1.1.tar.bz2

然后解压

tar -jxvf /root/trafficserver-9.1.1.tar.bz2

接着准备依赖,按照官网说明,需要如下:

  • pkgconfig
  • libtool
  • C++ compiler (gcc >= 4.3 or clang > 3.0)
  • GNU make
  • OpenSSL or BoringSSL
  • pcre
  • libcap
  • flex (for TPROXY)
  • hwloc
  • lua
  • zlib
  • curses (for traffic_top)
  • curl (for traffic_top)
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

如果你的内存跟我一样不足 2G,就先加 swap,内存够的话直接跳过这一步

创建 1.5G 的交换文件(量力而行)

sudo fallocate -l 1.5G /swapfile

更改权限

sudo chmod 600 /swapfile

设置交换分区

sudo mkswap /swapfile

激活交换文件

sudo swapon /swapfile

这个时候 swap 就加好了,现在有 2G 的内存,编译够了

按照官方文档,执行下面编译命令

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

上面如果./configure 提示无权限,就

chmod +x ./configure

编译需要挺久的,会消耗大量的时间,当然也是看机子性能,像我的这种垃圾小鸡就是几个小时的无尽等待了。

为了方便管理,创建一个链接

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

编译完成后,这些 swap 分区就用不到了,毕竟我的硬盘也严重吃紧,现在要把这 1.5G 的 swap 释放掉,重新更改为 512M,如果你前面没有分配 swap,这一步忽略,直接进入到配置环节。

swapoff  /swapfile
rm -rf /swapfile
sudo fallocate -l 500M /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

为了永久保留这个 swap,还需要编辑 /etc/fstab 文件

sudo nano /etc/fstab

底部添加一行

/swapfile swap swap defaults 0 0

3. 配置 Apache Traffic Server

我是要用 Apache Traffic Server 做 cdn 功能,想让用户强制 https 访问,所以先申请 ssl 证书。这里使用 acme.sh 配合 dnspod 做自动化部署。先安装 acme.sh

curl  https://get.acme.sh | sh
alias acme.sh=~/.acme.sh/acme.sh

添加 dnspod 的 api 秘钥(记得白名单要设置好,秘钥只会显示一次,一定要记住,看清楚是 dnspod 的 api 而不是腾讯云)

export DP_Id="your id"
export DP_Key="your key"
export ACCOUNT_EMAIL='your_email'

申请证书,将 test.com 替换为你的域名

acme.sh --issue --dns dns_dp -d test.com

申请成功后,安装证书,test.com 替换为你的域名,路径可以自己更改,但是要记住

acme.sh --installcert -d test.com \
--key-file /etc/trafficserver/ssl/test.private.key \
--fullchain-file /etc/trafficserver/ssl/test.fullchain.cer  \
--reloadcmd "traffic_ctl config reload"

执行到这里时,ssl 就已经配置好了,acme.sh 会自动更新你的证书,上面 reloadcmd 中的命令是让 Apache Traffic Server 重新载入配置,确保能加载更新后的 ssl 证书。这里执行的时候 reload 操作时肯定会报错的,没有关系,后面再解决。

推荐开启 acme.sh 的自动更新,保持脚本为最新版本

acme.sh --upgrade --auto-upgrade

接着配置 Apache Traffic Server,在 /etc/trafficserver/ 里面找到配置文件

配置 remap.config,test.com 为你的域名,ip 为源站 ip。如果您的源站未启用 https,那就将 443 端口改为 80

redirect http://test.com/ https://test.com/
map https://test.com/ https://88.88.88.88:443/

打开 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
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

 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

编辑文件 storage.config, 设置缓存大小,我的硬盘有限,就启用 3GB 缓存

var/trafficserver 3072M

编辑文件 volume.config,设置缓存分区

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%

编辑 records.config,开启 ssl 支持

在含有 server_ports 这行里,将整行改为

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

并且指明 ssl 路径,这个路径就是上面 acme.sh 安装证书的路径

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,指明具体的 ssl 证书

dest_ip=88.88.88.88 ssl_cert_name=test.fullchain.cer ssl_key_name=test.private.key

编辑 records.config,开启 OCSP 装订

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

编辑 plugin.config,自定义 HTTP header

header_rewrite.so /etc/trafficserver/header_rewrite.config

新建 header_rewrite.config 并编辑,“your-cdn-server” 替换为您自己的内容,ATS/9.1.1 是版本号,如果您使用的不是这个版本,那么就需要改为你所使用的版本

cond %{SEND_RESPONSE_HDR_HOOK}[AND]
cond %{HEADER:server} =ATS/9.1.1
set-header server "your-cdn-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

重载配置并重启 Apache Traffic server

trafficserver start
ldconfig
traffic_ctl config reload
trafficserver restart

配置完成,在有访客访问后,可以查看统计数据。如果没有访问直接执行下面命令会报错。

查看单个网站使用

traffic_logstats -o 88.88.88.88:443

查看服务器运行状态使用

traffic_top

此时整个过程就配置完成了。注意:Apache Traffic Server 不会开启自启动,如果您重启了服务器,请重新执行一次

trafficserver start

参考网站:

https://qing.su/article/traffic-server-reverse-proxy.html
https://qing.su/article/traffic-server-cdn-cluster.html
好主机测评广告位招租-300元/3月
赞(0) 打赏
未经允许不得转载:好主机测评网 » 记录一次Apache Traffic Server部署
好主机测评广告位招租-200元/3月
好主机测评广告位招租-100元/3月

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫