利用DNSPOD+SQUID搭建自己的CDN服务器

利用DNSPOD+SQUID搭建自己的CDN服务器

A服务器

域名:upcto.com
两台服务器:
电信服务器为A,作为内容服务器,源服务器
A的服务器IP是217.60.65.62

B服务器

网通服务器为B,作为CDN服务器,节点服务器。所需要的内容都从A服务器获取。
B服务器的IP是117.41.85.76

实现项

电信用户访问A,www.upcto.com
网通用户访问B,nc.upcto.com
用户只需要输入www.upcto.com,智能DNS就可以判断用户需要访问哪一个。

DNSPOD设置

DNSPOD采用A记录
主机记录 记录类型 线路类型 记录值
WWW A 电信 217.60.65.62
WWW A 网通 117.41.85.76

编译前准备

/usr/include/bits/posix_types.h
/usr/include/linux/typesizes.h

将define_FD_SETSIZE 1024修改为 65535

运行以下命令

ulimit -Hs 65535
ulimit -n 65535

下载squid源码
wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE13.tar.gz

通过cat /proc/cpuinfo得到CPU信息
在configure之前,我们必须先设置cflags

export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"

设置完毕之后,通过env命令查看是否设置成功
编译squid

CFLAGS="-O3 -fPIC" ./configure --prefix=/usr/local/squid --enable-follow-x-forwarded-for --enable-storeio=aufs,ufs --with-maxfd=65535 --with-pthreads --enable-dlmalloc --enable-poll --enable-stacktraces --enable-removal-policies=heap,lru --enable-delay-pools
make&& make install

设置hosts
linux下面的hosts表位于/etc/hosts

218.64.65.162        upcto.com www.upcto.com cdn.upcto.com

设置squid

squid的配置文件位于/usr/local/squid/etc/squid.conf
rm命令把squid.conf删掉
squid.conf删掉后,我们再用vim squid.conf,新建这个文件,然后把下面的内容帖进去,保存

http_port 80 vhost vport=80
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 1024 MB
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 256 KB
cache_dir ufs /var/spool/squid 20480 16 256
cache_swap_low 80
cache_swap_high 97
strip_query_terms off
request_body_max_size 5 MB
memory_pools on
memory_pools_limit 50 MB
access_log none
cache_log /var/log/squid/cache.log
cache_store_log none
pid_filename /var/run/squid.pid
hosts_file /etc/hosts
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i upcto\.com          240     100%    1440    ignore-reload
refresh_pattern -i www\.upcto\.com           240     100%    1440    ignore-reload
refresh_pattern -i .gif 180 20% 10080 override-expire ignore-reload reload-into-ims
refresh_pattern -i .jpg 180 20% 10080 override-expire ignore-reload reload-into-ims
refresh_pattern .                           120  50%    1440
acl all src 0.0.0.0/0.0.0.0
acl p-manager proto cache_object
acl s-localhost src 127.0.0.1/255.255.255.255
acl d-localhost dst 127.0.0.0/8
acl d-domains dstdomain .upcto.com
acl p-ssl  port 443 563
acl p-safe port 80 443 563
acl m-conn method CONNECT
acl m-purge method PURGE
acl n-maxconn maxconn 15
http_access allow p-manager s-localhost
http_access allow m-purge
http_access deny  !p-safe
http_access deny  m-conn !p-ssl
http_access deny  n-maxconn
http_access allow p-manager
http_access allow d-domains
http_access deny  all
http_reply_access allow all
acl r-url urlpath_regex realtime
cache deny r-url
icp_access allow all
follow_x_forwarded_for allow all
acl_uses_indirect_client offrange_offset_limit -1
dns_timeout 2 seconds
forward_timeout 10 seconds
connect_timeout 10 seconds
peer_connect_timeout 6 seconds
read_timeout 10 seconds
request_timeout 6 seconds
persistent_request_timeout 16 seconds
cache_mgr xzszxiong@163.com
cache_effective_user nobody
cache_effective_group nobody
visible_hostname cdn.upcto.com
logfile_rotate 0
always_direct allow all
error_directory /usr/local/squid/share/errors/Simplify_Chinese
coredump_dir /var/spool/squid

修改好配置文件后,我们还需要做一些最后的工作。
先建一个log目录,用来存放log文件。按照squid.conf的设置,我们输入下面的命令

mkdir /var/log/squid
mkdir /var/spool/squid 缓存目录
chown nobody:nobody /var/log/squid
chown nobody:nobody /var/spool/squid

查看命令是否成功,可以使用ls -lh

ls -lh /var/spool/

剩下最后一步,初始化squid的缓存目录结构。(也就是刚才说的16个一级目录,256个二级目录。本身这些文件夹不存在,需要通过squid的命令建立)
squid的命令在/usr/local/squid/sbin下,我们进入这个目录,然后看看squid命令的帮助
我们可以看到-z命令就是建立缓存目录的,所以我们输入

./squid -z

没有任何错误提示,说明目录已经建立成功了,我们可以用 ls /var/spool/squid看看效果。
最后,我们让squid跑起来

./squid -Nd 10
curl -I http://www.upcto.com/

client端的hosts配置如下

127.0.0.1  cdn.upcto.com localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
218.64.65.162 upcto.com www.upcto.com

最后正式运行

ulimit -Hs 65535
ulimit -n 65535
./squid

随系统启动
在/etc/rc.local加上

ulimit -Hs 65535
ulimit -n 65535
/usr/local/squid/sbin/squid

这里是2台服务器做演示,实际上应用可以配置多台效果更好

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

upcto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值