我们都知道CDN(内容分发网络)是用来给网站加速用的,通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络的“边缘”,使用户可以就近取得所需的内容,以提高用户访问网站的响应速度,目前国外的CDN技术已经是如火如荼,而国内也已经是异军突起,像网宿、帝联、cdn联盟、蓝汛等等纷纷加入到CDN的行列.那么到底CDN是通过什么技术来实现的呢?其实说白了目前国内众多CDN厂商都是使用软件技术—Squid也就是代理服务器的方式实现,其本身成本比较低、配置方便灵活.其内容服务模式是基于缓存服务器,也叫做代理缓存.主要的技术是网络负载均衡(多个squid代理服务器)、动态内容分发复制和缓存技术,简单的说当一个用户访问已经加入CDN服务(squid代理)的网站时,用户的请求并不直接发送到后端web服务器,而是发送到squid服务器(CDN中称节点),squid再根据本地的DNS记录向后端的目标web服务器发送请求,请求有响应并返回数据时squid会先将数据缓存一份到本地服务器上,然后返回结果给用户,当下一位客户访问相同的内容时直接从squid上返回结果而不经过后端web服务器,从而节约网站带宽,加速客户访问速度。下面的配置告诉你CDN是如何实现
1.此处我们使用的是源代码包编译的方式安装,squid源代码包可以从以下站点下载http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE9.tar.gz
2在系统的根目录下我们创建一个名为squid的文件夹用作squid安装目录并进入此目录,将你下载好的源代码包放置于此目录,使用以下命令:
mkdir /squid
cd /squid
3.在开始编译安装之前我们还需要做些准备工作:
service iptables stop -------停止iptables服务
service httpd stop ------停止httpd服务
安装squid所需要的组件
yum –y install gcc-c++ net-snmp net-snmp-utils make
创建squid用户且此用户不能登陆系统
useradd squid -M -c "Squid user" -d /dev/null -s /sbin/nologin
命令查看文件描述符
ulimit -n unlimited
ulimit -n
1048576
ulimit -HSn 1048576 -----设置文件描述符,此处我们设置的文件描述符是1048576
4.编译配置squid
进入目录cd /squid
使用命令tar-zxvf /squid/squid-2.7.STABLE9.tar.gz解压源代码包,解压后生成目录squid-2.7. STABLE9
cd squid-2.7. STABLE9
开始编译安装,使用命令:
./configure --enable-kill-parent-hack --enable-large-cache-files --with-large-files --with-maxfd=344800 --enable-snmp --disable-ident-lookups --enable-carp --enable-async-io=160 --enable-storeio=ufs,aufs,diskd,null,coss --enable-epoll --enable-linux-netfilter --enable-stacktraces --enable-forward-log --enable-referer-log --enable-useragent-log --enable-delay-pools --enable-follow-x-forwarded-for --enable-forw-via-db --enable-default-err-language=Simplify_Chinese --enable-err-languages="Simplify_Chinese English" --without-system-md5 --disable-internal-dns --prefix=/squid
make
make install
Configure 选项
--prefix=/squid 这里为squid的安装目录
--enable-kill-parent-hack 关掉squid进程时连同父进程也一起关掉(enable表示开启此项功能,disable则表示关闭)
--enable-large-cache-files 支持大的缓存文件
--with-large-files 支持大的文件
--with-maxfd=344800 覆盖的最大数量的filedescriptors
--enable-snmp 简单网络管理协议(SNMP)是监视网络设备和服务器的流行方法。该选项导致编译过程去编译所有的SNMP相关的代码,包括一个裁切版本的CMU SNMP库
--disable-ident-lookups ident是一个简单的协议允许服务器利用客户端的特殊TCP连接来发现用户
--enable-carp Cache数组路由协议(CARP)用来转发丢失的cache到父cache的数组或cluster
--enable-async-io=160 同步I/O 是squid 技术之一,用以提升存储性能。aufs 模块使用大量的线程来执行磁盘I/O 操作。该代码仅仅工作在linux 和solaris 系统中。=N_THREADS 参数改变squid 使用的线程数量 此处Io是有瓶颈限制的
----enable-storeio=ufs,aufs,diskd,null,coss Squid 支持大量的不同存储模块。通过使用该选项,你告诉squid 编译时使用哪个模块
--enable-epoll 支持epoll的IO模式,2.6以上内核才具有
--enable-linux-netfilter netfilter是linux内核的包过滤器的名字
--enable-stacktraces 某些系统支持在程序崩溃时,自动产生数据追踪。当你激活该功能后,如果squid崩溃,数据追踪信息被写到cache.log文件。这些信息对开发和程序bug调试有用
--enable-forward-log 支持实验forward-log指令
--enable-referer-log 该选项激活来自客户请求的HTTP referer 日志
--enable-useragent-log 该选项激活来自客户请求的HTTP 用户代理头的日志
--enable-delay-pools 延时池是squid 用于传输形状或带宽限制的技术。该池由大量的客户端IP 地址组成。当来自这些客户端的请求处于cache 丢失状态,他们的响应可能被人工延迟
--enable-follow-x-forwarded-for 当一个请求被另一些代理服务器转发时通过从http头中寻找X-Forwarded-For来发现直接或间接的客户端的IP地址
--enable-forw-via-db 支持forw/via 数据库
--enable-default-err-language=Simplify_Chinese 该选项设置error_directory指令的默认值
--enable-err-languages="Simplify_Chinese English" squid支持定制错误消息,错误消息可以用多种语言报告。该选项指定复制到安装目录($prefix/share/errors)的语言
--without-system-md5 不使用md5加密算法
--disable-internal-dns squid源代码包含两个不同的DNS解决方案,叫做“内部的”和“外部的”。内部查询是默认的,但某些人可能要使用外部技术。该选项禁止内部功能,转向使用旧的方式
给squid创建缓存目录并赋予相应的权限
mkdir /data
mkdir /data/cache1
chmod –R 777 /data/cache1
chmod –R 777 /squid/var/
chmod –R 777 /squid/var/logs/
chown -R squid:squid /data/cache1
chown -R squid:squid /squid/var/logs
5.编辑squid配置文件
rm –rf /squid/etc/squid.conf
vi /squid/etc/squid.conf
cache_peer 192.168.1.30 parent 8080 0 no-query round-robin max-conn=32 originserver name=ip
cache_peer_domain ip 192.168.1.30 此处还可增加多个squid节点IP,用于负载均衡、动态内容分发与复制
------反向代理 语法cache_peer Web服务器地址 服务器类型 http端口
------ACL访问控制列表-----
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 800 # http1
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl monitor src 192.168.1.0/255.255.255.0 127.0.0.1
acl 789789 referer_regex -i 789789
http_access deny 789789
deny_info http://www.hnhack.com/ 789789
#http_access allow manager
http_access allow manager monitor
http_access deny manager
acl PURGE method PURGE
http_access allow PURGE localhost
http_access deny purge
acl snmppublic snmp_community public
snmp_access allow snmppublic all
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
############################## Device Configuration Define #################################
visible_hostname hnhack ------可见主机名
cache_dir aufs /data/cache1/ 260000 128 2 -----定义缓存目录 数据存储格式 缓存到的目录 为缓存目录分配的磁盘空间(MB) 缓存空间的一级子目录个数 二级子目录个数
maximum_object_size 2048 KB -----最大缓存对象大小
minimum_object_size 0 KB -----最小缓存对象大小
store_dir_select_algorithm round-robin
cache_replacement_policy lru
cache_swap_low 90
cache_swap_high 95
reload_into_ims on
via off
refresh_stale_hit 0 minute
vary_ignore_expire on
request_timeout 30 seconds
persistent_request_timeout 10 seconds
connect_timeout 30 seconds
read_timeout 10 minutes
server_persistent_connections off
client_persistent_connections off
collapsed_forwarding on
maximum_object_size_in_memory 8 KB
cache_mem 1024 MB -----缓存所占内存空间大小
memory_replacement_policy lru
logformat squid_custom_log %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt "%{Referer}>h" "%{User-Agent}>h" %{Cookie}>h
#cache_access_log /squid/var/logs/access.log squid_custom_log
cache_access_log none
strip_query_terms off
logfile_rotate 0
#cache_log /data/proclog/log/squid/cache.log
cache_store_log none
http_port 80 accel vhost vport allow-direct -----指定squid监听HTTP请求的端口,一般都设置成80端口,
这样使用户感觉不到反向代理的存在,就像访问真正的WEB服务器一样。设定squid为accel加速模式,vhost必须要加.
否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误 此处就为加入到CDN服务的网站起加速作用
icp_port 0
snmp_port 3401
cache_effective_user squid ----- squid用户及用户组
cache_effective_group squid
pid_filename /var/run/squid.pid -----squid进程名
diskd_program /squid/libexec/diskd
unlinkd_program /squid/libexec/unlinkd
half_closed_clients off
hosts_file /squid/etc/hosts
dns_children 3
dns_testnames 127.0.0.1
client_db off
cachemgr_passwd test4squid config
cache_mgr my@you.com ----管理员账号
quick_abort_min -1 KB
range_offset_limit -1 KB
refresh_pattern -i ^http:// 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.htm$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.html$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.bmp$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.gif$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.jpg$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.jpeg$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.png$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.js$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.swf$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.css$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.xml$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.yaml$ 30 0% 30 ignore-reload override-lastmod
refresh_pattern -i \.text$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.ico$ 1440 0% 1440 ignore-reload override-lastmod
acl QUERY urlpath_regex cgi-bin\? \.php
cache deny QUERY
acl LocalServers dst 192.168.1.30
no_cache deny LocalServers
vi /squid/etc/hosts 文件 添加DNS记录
x.x.x.x www.x.com 注意此处的DNS记录为本地DNS记录,记录加入到CDN服务的网站,用于squid代理服务器快速寻找目标网站
7.Squid常用命令
1,初始化你在 squid.conf 里配置的 cache 目录
#/squid/sbin/squid -z //初始化缓存空间
如果有错误提示,请检查你的 cache目录的权限。
2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。
#/squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。
3,启动squid在后台运行。
#/squid/sbin/squid -s
这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。 查看squid进程看是否启动
ps aux |grep squid
如配置文件有更改,需使用命令 /squid/sbin/squid –k reconfigure 重新加载配置文件
Squid相关的命令
结束squid进程 /squid/sbin/squid –k shutdown
取得squid运行状态信息:/squid/bin/squidclient -p 80 mgr:info
取得squid内存使用情况:/squid/bin/squidclient -p 80 mgr:mem
取得squid已经缓存的列表:/squid/bin/squidclient -p 80 mgrbjects. use it carefully,it may crash
取得squid的磁盘使用情况:/squid/bin/squidclient -p 80 mgr:diskd
强制更新某个url:/squid/bin/squidclient -p 80 -m PURGE http://www.hnhack.com/
查命中率:
/squid/bin/squidclient -h111.222.111.111 -p80 mgr:info
/squid/bin/squidclient -h具体的IP -p80 mgr:info
8. 将squid写入启动脚本,随计算机每次启动而自启动
vi /etc/rc.local 添加一行
/squid/sbin/squid -s
网络安全选项的调整:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
编辑iptables配置文件,禁止ping
*filter
:INPUT ACCEPT [1:229]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
COMMIT
保存退出,重新启动iptables服务
Service iptables save
Service iptables restart
通过我上面的详细地解读,您应该知道了CDN并不是多么的神秘,而且CDN也存在一定的局限性那就是它的实时性不太好,而且squid有限制不支持多核得cpu,这对于服务器得利用率不高,所以对于网络上CDN的宣传,我们还是要知道其真实的面目,知道它是怎么一回事.
-
教你用squid做CDN把公司做到上市
2014-01-13 11:14:00使用户可以就近取得所需的内容,以提高用户访问网站的响应速度,目前国外的CDN技术已经是如火如荼,而国内也已经是异军突起,像网宿、帝联、cdn联盟、蓝汛等等纷纷加入到CDN的行列.那么到底CDN是通过什么技术来实现...转载于:https://www.cnblogs.com/tonykan/p/3517106.html
-
教你如何用Squid做CDN把公司做到上市
2012-05-07 10:24:58使用户可以就近取得内容,以提高用户访问网站的响应速度,目前国外的CDN技术已经是如火如荼,而国内也已经是异军突起,像网宿、帝联、cdn联盟、蓝汛等等纷纷加入到CDN的行列.那么到底CDN是通过什么技术来实现的呢?...我们都知道CDN(内容分发网络)是用来给网站加速用的,通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络的“边缘”,使用户可以就近取得内容,以提高用户访问网站的响应速度,目前国外的CDN技术已经是如火如荼,而国内也已经是异军突起,像网宿、帝联、cdn联盟、蓝汛等等纷纷加入到CDN的行列.那么到底CDN是通过什么技术来实现的呢?其实说白了目前国内众多CDN厂商都是使用软件技术-Squid也就是代理服务器的方式实现,其本身成本比较低、配置方便灵活.其内容服务模式是基于缓存服务器,也叫做代理缓存.主要的技术是网络负载均衡(多个squid代理服务器)、动态内容分发复制和缓存技术,简单的说当一个用户访问已经加入CDN服务(squid代理)的网站时,用户的请求并不直接发送到后端web服务器,而是发送到squid服务器(CDN中称节点),squid再根据本地的DNS记录向后端的目标web服务器发送请求,请求有响应并返回数据时squid会先将数据缓存一份到本地服务器上,然后返回结果给用户,当下一位客户访问相同的内容时直接从squid上返回结果而不经过后端web服务器,从而节约网站带宽,加速客户访问速度。下面的配置告 诉你CDN是如何实现
1.此处我们使用的是源代码包编译的方式安装,squid源代码包可以从以下站点下载http://www.squid-cache.org/Versions/v2/2.7/squid-2.7.STABLE9.tar.gz
2.在系统的根目录下我们创建一个名为squid的文件夹用作squid安装目录并进入此目录,将你下载好的源代码包放置于此目录,使用以下命令:
mkdir /squid
cd /squid
3.在开始编译安装之前我们还需要做些准备工作:
service iptables stop -------停止iptables服务
service httpd stop------停止httpd服务
安装squid所需要的组件
yum –y install gcc-c++ net-snmp net-snmp-utils make
创建squid用户且此用户不能登陆系统
useradd squid -M -c "Squid user" -d /dev/null -s /sbin/nologin
文件描述符:文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推。Unix操作系统通常给每个进程能打开的文件数量强加一个限制。更甚的是,unix通常有一个系统级的限制。因为squid的工作方式,文件描述符的限制可能会极大的影响性能。当squid用完所有的文件描述符后,它不能接收用户新的连接。也就是说,用完文件描述符导致拒绝服务。直到一部分当前请求完成,相应的文件和socket被关闭,squid不能接收新请求。当squid发现文件描述符短缺时,它会发布警告。在运行./configure之前,检查你的系统的文件描述符限制是否合适,能给你避免一些麻烦。大多数情况下,1024个文件描述符足够了。非常忙的cache可能需要4096或更多。
命令查看文件描述符
ulimit -n unlimited
ulimit -n
1048576
ulimit -HSn 1048576 -----设置文件描述符,此处我们设置的文件描述符是1048576
4. 编译配置squid 进入目录
cd /squid
使用命令tar-zxvf /squid/squid-2.7.STABLE9.tar.gz解压源代码包,解压后生成目录squid-2.7.STABLE9
cd squid-2.7. STABLE9
开始编译安装,使用命令:
./configure --enable-kill-parent-hack --enable-large-cache-files --with-large-files --with-maxfd=344800 --enable-snmp --disable-ident-lookups --enable-carp --enable-async-io=160 --enable-storeio=ufs,aufs,diskd,null,coss --enable-epoll --enable-linux-netfilter --enable-stacktraces --enable-forward-log --enable-referer-log --enable-useragent-log --enable-delay-pools --enable-follow-x-forwarded-for --enable-forw-via-db --enable-default-err-language=Simplify_Chinese --enable-err-
languages="Simplify_Chinese English" --without-system-md5 --disable-internal-dns --prefix=/squid
make
make install
Configure 选项
--prefix=/squid 这里为squid的安装目录
--enable-kill-parent-hack 关掉squid进程时连同父进程也一起关掉(enable表示开启此项功能,disable则表示关闭)
--enable-large-cache-files 支持大的缓存文件
--with-large-files 支持大的文件
--with-maxfd=344800 覆盖的最大数量的filedescriptors
--enable-snmp 简单网络管理协议(SNMP)是监视网络设备和服务器的流行方法。该选项导致编译过程去编译所有的SNMP相关的代码,包括一个裁切版本的CMU SNMP库
--disable-ident-lookups ident是一个简单的协议允许服务器利用客户端的特殊TCP连接来发现用户
--enable-carp Cache数组路由协议(CARP)用来转发丢失的cache到父cache的数组或cluster
--enable-async-io=160 同步I/O 是squid 技术之一,用以提升存储性能。aufs 模块使用大量的线程执行磁盘I/O 操作。该代码仅仅工作在linux 和solaris 系统中。=N_THREADS 参数改变squid 使用的线程数量此处I/O是有瓶颈限制的
--enable-storeio=ufs,aufs,diskd,null,coss Squid 支持大量的不同存储模块.通过使用该选项,你告诉squid 编译时使用哪个模块
--enable-epoll 支持epoll的IO模式,2.6以上内核才具有
--enable-linux-netfilter netfilter是linux内核的包过滤器的名字
--enable-stacktraces 某些系统支持在程序崩溃时,自动产生数据追踪.当你激活该功能后,如果squid崩溃,数据追踪信息被写到cache.log文件.这些信息对开发和程序bug调试有用
--enable-forward-log 支持实验forward-log指令
--enable-referer-log 该选项激活来自客户请求的HTTP referer 日志
--enable-useragent-log 该选项激活来自客户请求的HTTP 用户代理头的日志 -
--enable-delay-pools 延时池是squid 用于传输形状或带宽限制的技.该池由大量的客户端IP 地址组成。当来自这些客户端的请求处于cache 丢失状态,他们的响应可能被人工延迟
--enable-follow-x-forwarded-for 当一个请求被另一些代理服务器转发时通过从http头中寻找X-Forwarded-For来发现直接或间接的客户端的IP地址
--enable-forw-via-db 支持forw/via 数据库
--enable-default-err-language=Simplify_Chinese 该选项设置error_directory指令的默认值
--enable-err-languages="Simplify_Chinese English" squid支持定制错误消息,错误消息可以用多种语言报告.该选项指定复制到安装目录($prefix/share/errors)的语言
--without-system-md5 不使用md5加密算法
--disable-internal-dns squid源代码包含两个不同的DNS解决方案,叫做“内部的”和“外部的”.内部查询是默认的,但某些人可能要使用外部技术。该选项禁止内部功能,转向使用旧的方式
5.给squid创建缓存目录并赋予相应的权限
mkdir /data
mkdir /data/cache1
chmod –R 777 /data/cache1
chmod –R 777 /squid/var
chmod –R 777 /squid/var/logs
chown -R squid:squid /data/cache1
chown -R squid:squid /squid/var/logs
6. 编辑squid配置文件
rm –rf /squid/etc/squid.conf
vi /squid/etc/squid.conf
cache_peer 192.168.10.1 parent 8080 0 no-query round-robin max-conn=32 originserver name=ip
cache_peer domain ip 192.168.10.1---此处我们还可以增加多个squid节点ip,用于负载均衡、动态内容分发与复制 - ---反向代理
-----ACL 访问控制列表----
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 800 # http1
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl monitor src 192.168.1.0/255.255.255.0 127.0.0.1
acl 789789 referer_regex -i 789789
http_access deny 789789
deny_info http://www.hnhack.com 789789
#http_access allow manager
http_access allow manager monitor
http_access deny manager
acl PURGE method PURGE
http_access allow PURGE localhost
http_access deny purge
acl snmppublic snmp_community public snmp_access
allow snmppublic all
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
############################## Device Configuration Define #################################
visible_hostname hnhack ------可见主机名
cache_dir aufs /data/cache1/ 260000 128 2 -----定义缓存目录数据存储格式 缓存到的目录 为缓存目录分配的空间(MB) 缓存空间的一级子目录个数、二级子目录个数
maximum_object_size 2048 KB -----最大缓存对象大小
minimum_object_size 0 KB ----最小缓存对象大小
store_dir_select_algorithm round-robin
cache_replacement_policy lru
cache_swap_low 90
cache_swap_high 95
reload_into_ims on
via off
refresh_stale_hit 0 minute
vary_ignore_expire on
request_timeout 30 seconds
persistent_request_timeout 10 seconds
connect_timeout 30 seconds
read_timeout 10 minutes
server_persistent_connections off
client_persistent_connections off
collapsed_forwarding on
maximum_object_size_in_memory 8 KB cache_mem 1024 MB -----缓存所占用的内存的空间
memory_replacement_policy lru
logformat squid_custom_log %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru%un %Sh/%<A %mt "%{Referer}>h" "%{User-Agent}>h" %{Cookie}>h
#cache_access_log /squid/var/logs/access.log squid_custom_log
cache_access_log none
strip_query_terms off
logfile_rotate 0
#cache_log /data/proclog/log/squid/cache.log
cache_store_log none
http_port 80 accel vhost vport allow-direct 指定squid监听HTTP请求的端口,一般都设置成80端口,这样使用户感觉不到反向代理的存在,就像访问真正的WEB服务器一样。设定squid为accel加速模式,vhost必须要加.否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误 此处就为加入到CDN服务的网站起加速作用
icp_port 0
snmp_port 3401
cache_effective_user squid ---- squid用户及组
cache_effective_group squid
pid_filename /var/run/squid.pid -----squid进程名
diskd_program /squid/libexec/diskd
unlinkd_program /squid/libexec/unlinkd
half_closed_clients off
hosts_file /squid/etc/hosts
dns_children 3
dns_testnames 127.0.0.1
client_db off
cachemgr_passwd
test4squid config
cache_mgr my@you.com ----管理员帐户
quick_abort_min -1 KB
range_offset_limit -1 KB
refresh_pattern -i ^http:// 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.htm$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.html$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.bmp$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.gif$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.jpg$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.jpeg$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.png$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.js$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.swf$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.css$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.xml$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.yaml$ 30 0% 30 ignore-reload override-lastmod
refresh_pattern -i \.text$ 5 0% 5 ignore-reload override-lastmod
refresh_pattern -i \.ico$ 1440 0% 1440 ignore-reload override-lastmod
acl QUERY urlpath_regex cgi-bin\? \.php
cache deny QUERY
acl LocalServers dst 192.168.10.1
no_cache deny LocalServers
vi/squid/etc/hosts 文件添加DNS记录
x.x.x.x www.x.com 注意此处的DNS记录为本地的DNS记录,记录加入到CDN服务的网站,用于squid服务器快速寻找目标网站
7. Squid常用命令
1初始化你在 squid.conf 里配置的 cache 目录
#l/squid/sbin/squid -z //初始化缓存空间 如果有错误提示,请检查你的 cache目录的权限。
2,对你的squid.conf 排错,即验证 squid.conf 的语法和配置。
#/squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。
3,启动squid在后台运行。
#/squid/sbin/squid -s
这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。
ps aux |grep squid
如配置文件有更改,需使用命令 /squid/sbin/squid –k reconfigure 重新加载配置文件
Squid相关的命令
结束squid进程 /squid/sbin/squid –k shutdown
取得squid运行状态信息:/squid/bin/squidclient -p 80 mgr:info
取得squid内存使用情况:/squid/bin/squidclient -p 80 mgr:mem
取得squid已经缓存的列表:/squid/bin/squidclient -p 80 mgrbjects. use it carefully,it may crash
取得squid的磁盘使用情况:/squid/bin/squidclient -p 80 mgr:diskd
强制更新某个url:/squid/bin/squidclient -p 80 -m PURGE http://www.hnhack.com
查命中率:
/squid/bin/squidclient -h111.222.111.111 -p80 mgr:info
/squid/bin/squidclient -h具体的IP -p80 mgr:info
8. 将squid写入启动脚本,随计算机每次启动而自启动
vi /etc/rc.local 添加一行
/squid/sbin/squid -s
网络安全选项的调整:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
echo 1 > /proc/sys/net/ipv4/tcp_syn_retries
编辑iptables配置文件,禁止ping
*filter
:INPUT ACCEPT [1:229]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
COMMIT
保存退出,重新启动iptables服务
Service iptables save
Service iptables restart
通过我上面的详细地解读,您应该知道了CDN并不是多么的神秘,而且CDN也存在一定的局限性那就是它的实时性不太好,而且squid有限制不支持多核得cpu,这对于服务器利 用率不高,所以对于网络上CDN的宣传,我们还是要知道其真实的面目,知道它是怎么一回事. -
cdn需要备案吗_CDN百科第三讲 | 如果用了云服务器,还需要做CDN加速吗?
2020-12-20 00:59:14在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大家介绍下你关心的问题:如果用了云服务器,还需不需要做CDN加速?先上结论:云服务器和CDN的业务场景不同,并不能彼此替代,同时...在全站上云的背景下,云计算已经不仅仅是大型互联网公司的独享概念,正在被更多的传统企业、中小企业甚至个人站长所采用。在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大家介绍下你关心的问题:如果用了云服务器,还需不需要做CDN加速?
先上结论:云服务器和CDN的业务场景不同,并不能彼此替代,同时,它们可以互相补充已达到提升效率的目的。
相对于传统服务器,云服务器以简单高效、安全可靠、处理能力可弹性伸缩的计算形态为用户提供服务,有助于降低用户的企业IT成本,提升运维效率。云计算发展至今,云服务器作为基础服务受到了众多企业和站长的欢迎,用于部署企业官网网站、资讯门户、电商应用、办公系统等等,承载数据。通常针对不同的业务场景,会有不同规格、价位、性能的云服务器可供选择。
CDN全称Content Delivery Network,即内容分发网络,它是指将源站内容分发至最接近用户的节点服务器,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、音乐、图片、文件、点播、直播、应用程序等内容的加速分发。
我们就拿618促销背后的物流体系来举例,服务器源站就相当于某品牌自己的货仓,而CDN就像分布于各地的仓储物流点。
现在很多品牌都会预先在各地仓储物流点,提前储备一些常用的商品(静态文件使用CDN进行缓存),当用户从电商平台下单购买货物的时候(用户发起请求),平台根据用户的收获地址就近匹配到最近的仓储物流点并直接进行派货(就近分发),让用户以最快的速度拿到快递包裹(分发的内容)。我们可以用实际的生活经验来做个对比,如果从江浙沪包邮区寄给杭州的用户,一般第二天就能到,如果是从北京、深圳发货,一般需要2-3天!
这种方案还能避免所有订单都从单一货仓发货爆仓的风验,当就近的货仓物流比较繁忙时,则智能匹配其它就近的货仓进行分流,可以减少包裹全部由总仓(源站服务器)发货到各地的运输(带宽)成本。另外,采用共享的仓储物流点(CDN)模式也可以完美地根据销售需求来调整仓储规模和方案,避免自建货仓(多地云服务器)后在业务高峰后的资源闲置浪费。
所以,降低延时,提高稳定性,降低带宽成本,弹性灵活,都是使用CDN的好处。除此之外,CDN还可以:
第一,降低服务器带宽压力
假如你的服务器同时支持1000人在线,那么当超过1000人访问的时候,你的网站就会出现访问瓶颈,延时、卡顿甚至宕机问题接踵而至。在使用CDN后,CDN可以将网站的静态内容缓存在边缘节点上,这样当用户访问静态资源时候就不用再请求回源服务器了,以此减少服务器的带宽峰值。
第二,保护源站服务器
由于CDN的分布式架构,用户通过访问就近边缘节点获取内容,通过这样的跳板,有效地隐藏源站IP,从而分解源站的访问压力。当大规模恶意攻击来袭时,CDN也可以做为第一道防线进行防护,大大分散攻击强度,即使是针对动态内容的的恶意请求,CDN的智能调度系统还可以卸载源站服务器的压力,维护系统平稳。
相信看过这篇文章后,再有人问你:使用云服务器之后到底要不要再用CDN,你应该会有答案了吧。
动动小手指 了解更多详情 !
-
CDN百科 | 如果用了云服务器,还需要做CDN加速吗?
2020-06-22 16:11:22在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大家介绍下你关心的问题:如果用了云服务器,还需不需要做CDN加速? 先上结论:云服务器和CDN的业务场景不同,并不能彼此替代,...在全站上云的背景下,云计算已经不仅仅是大型互联网公司的独享概念,正在被更多的传统企业、中小企业甚至个人站长所采用。在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大家介绍下你关心的问题:如果用了云服务器,还需不需要做CDN加速?
先上结论:云服务器和CDN的业务场景不同,并不能彼此替代,同时,它们可以互相补充已达到提升效率的目的。
相对于传统服务器,云服务器以简单高效、安全可靠、处理能力可弹性伸缩的计算形态为用户提供服务,有助于降低用户的企业IT成本,提升运维效率。云计算发展至今,云服务器作为基础服务受到了众多企业和站长的欢迎,用于部署企业官网网站、资讯门户、电商应用、办公系统等等,承载数据。通常针对不同的业务场景,会有不同规格、价位、性能的云服务器可供选择。
CDN全称Content Delivery Network,即内容分发网络,它是指将源站内容分发至最接近用户的节点服务器,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、音乐、图片、文件、点播、直播、应用程序等内容的加速分发。
我们就拿618促销背后的物流体系来举例,服务器源站就相当于某品牌自己的货仓,而CDN就像分布于各地的仓储物流点。
现在很多品牌都会预先在各地仓储物流点,提前储备一些常用的商品(静态文件使用CDN进行缓存),当用户从电商平台下单购买货物的时候(用户发起请求),平台根据用户的收获地址就近匹配到最近的仓储物流点并直接进行派货(就近分发),让用户以最快的速度拿到快递包裹(分发的内容)。我们可以用实际的生活经验来做个对比,如果从江浙沪包邮区寄给杭州的用户,一般第二天就能到,如果是从北京、深圳发货,一般需要2-3天!
这种方案还能避免所有订单都从单一货仓发货爆仓的风验,当就近的货仓物流比较繁忙时,则智能匹配其它就近的货仓进行分流,可以减少包裹全部由总仓(源站服务器)发货到各地的运输(带宽)成本。另外,采用共享的仓储物流点(CDN)模式也可以完美地根据销售需求来调整仓储规模和方案,避免自建货仓(多地云服务器)后在业务高峰后的资源闲置浪费。
所以,降低延时,提高稳定性,降低带宽成本,弹性灵活,都是使用CDN的好处。除此之外,CDN还可以:
第一,降低服务器带宽压力
假如你的服务器同时支持1000人在线,那么当超过1000人访问的时候,你的网站就会出现访问瓶颈,延时、卡顿甚至宕机问题接踵而至。在使用CDN后,CDN可以将网站的静态内容缓存在边缘节点上,这样当用户访问静态资源时候就不用再请求回源服务器了,以此减少服务器的带宽峰值。
第二,保护源站服务器
由于CDN的分布式架构,用户通过访问就近边缘节点获取内容,通过这样的跳板,有效地隐藏源站IP,从而分解源站的访问压力。当大规模恶意攻击来袭时,CDN也可以做为第一道防线进行防护,大大分散攻击强度,即使是针对动态内容的的恶意请求,CDN的智能调度系统还可以卸载源站服务器的压力,维护系统平稳。
相信看过这篇文章后,再有人问你:使用云服务器之后到底要不要再用CDN,你应该会有答案了吧。
【CDN百科】专栏中,我们会不断科普CDN知识,解读CDN实践,分享CDN案例,如果你也关注CDN、使用CDN,请留言回复你关心的话题哦!
-
discuzx2 附件做cdn
2012-11-27 17:40:021、为提高公司论坛的性能,公司决定做论坛附件的cdn 2、上传附件:通过ftp的方式上传附件,如果想直接跨域上传附件,我觉得会很困难的,目前本人尚没有方法做到跨域上传附件。 3、本公司只是为data重新指定了一个... -
CDN网络架构
2018-08-10 19:05:45本质上就是提供缓存,使得用户总是能访问离他最近的服务器,akamai是世界上的第一家做CDN的公司 实例:构建CDN分发网络架构 环境:使用7台 Linux主机部署CDN环境架构,使用Nginx作为Web服务器,Squid作为各地区反向... -
CDN百科第三讲 | 如果用了云服务器,还需要做CDN加速吗?
2020-06-09 18:30:41在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大家介绍下你关心的问题:如果用了云服务器,还需不需要做CDN加速? 先上结论:云服务器和CDN的业务场景不同,并不能彼此替代,... -
CDN百科第三讲|如果用了云服务器,还需要做CDN加速吗?
2020-06-09 21:46:35在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大家介绍下你关心的问题:如果用了云服务器,还需不需要做CDN加速? 先上结论:云服务器和CDN的业务场景不同,并不能彼此替代,... -
CDN 的简述
2019-01-13 22:08:50之前,公司内部知识分享,讲了些关于 CDN 方面的知识,但是那两天都加班到很晚,精神有点不好,没有整理。今天梳理一下,做一点输出, 是个简单的内容。 CDN 能够加速请求,是因为能够将数据或是静态文件缓存起来,当... -
云服务器抢票咋用_CDN百科第三讲 | 如果用了云服务器,还需要做CDN加速吗?
2021-01-05 12:34:19在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大家介绍下你关心的问题:如果用了云服务器,还需不需要做CDN加速?先上结论:云服务器和CDN的业务场景不同,并不能彼此替代,同时... -
渗透测试公司对客户网站用CDN后获取真实服务器IP的方法
2021-01-06 14:09:32在新年之季,我们SINESAFE在给客户做网站渗透测试服务的时候经常遇到一些网站域名用...由于CDN加速需要支付一定的费用,很多网站只对主站做了CDN加速,子域名没有做CDN加速,子域名可能跟主站在同一个服务器或者同一个C -
迅雷发布“星域CDN” 做条颠覆市场的鲶鱼
2017-09-06 10:32:00这是我与迅雷技术官兼网心科技首席执行官陈磊在加入迅雷后的第二次...但他也在聊天过程中和我提及来迅雷其实是一次创业,所以从当时也可以听出网心科技其实就是迅雷的CDN公司。果不其然在6月25日,迅雷正式为网心... -
适合中小型公司的 CDN 服务调研
2013-05-05 00:45:00为什么80%的码农都做不了架构师?>>> ... -
CDN系列---Akamai Media Delivery Part2:如何提高EXOPLAYER的视频流质量
2020-03-04 15:37:50Akamai是发明CDN的公司,MIT的CS和数学教授创的,这公司至少趁几十万台服务器,分发了互联网35%的流量。 算法鼻祖。看该公司的分析成果,对该公司来说,绝对不能算研究成果: ——网页每延时100毫秒,交易转化率... -
CDN请求过程详解
2020-06-14 17:03:05CDN简介 CDN大家比较熟悉,这里做个简单介绍。 CDN主要是让用户访问资源的时候,能从离用户距离很近的CDN节点进行获取,不必...第三阶段 2001年互联网破灭,CDN公司大量倒闭,Tim的公司也倒闭了。2002年开始,宽带提升 -
从CDN支持直播加速的协议说起
2020-06-11 22:51:13最近在做一个CDN的直播加速业务测试,客户给出的直播网站的域名是一个xxx.m3ua地址,一开始有点奇怪,为什么直播业务给出的一个是m3ua媒体文件地址,而不是一个实时的数据流地址呢? 上网查了一下,原来是这样的,... -
什么样的网站需要CDN技术
2010-09-10 11:49:00<br /> 我们请了第三方公司对我们的CDN做了性能测试,测试结果表明,从ISP分类来看,教育网的用户使用CDN后提速最为明显,访问速度可以提高5倍以上,客户对教育网的访问效果非常满意;从地区分类来看,边缘... -
CDN系列---Akamai Media Delivery Part1:如何通过调整ExoPlayer中的配置来提高用户体验(QoE)
2020-03-04 15:48:25Akamai是发明CDN的公司,MIT的CS和数学教授创的,这公司至少趁几十万台服务器,分发了互联网35%的流量。 算法鼻祖。看该公司的分析成果,对该公司来说,绝对不能算研究成果: ——网页每延时100毫秒,交易转化率... -
如今建立新的CDN是一个利润丰厚的商业模式吗?
2013-08-15 00:39:32因为这需要你在硬件和基础设施领域做充分的CAPEX投资调查 - 甚至关于DC投资的方面。你甚至不得不花费大量的投资在没有一个客户的情况下。这一点有点像建立一个航空公司,在乘客买票登机之前,你需要大量资金购置... -
网宿,这家和BAT同时创业的CDN之王的对与错
2017-07-05 10:04:003年后,尽管市场需求猛增,归属于上市公司股东的净利润却预计同比最高下降30%。从击败“市场霸主”蓝汛通信到被云计算企业围攻,在技术和市场双重变化的浪潮里,网宿做对了什么?又做错了什么? 2年时间,股价坐了... -
StartUp技术交流会:动态内容的CDN缓存、Memcahce的使用
2009-11-05 10:22:00上周末在博客大巴邀请了上海几家StartUp公司的朋友做了一次技术交流:VeryCD的科学家们,客齐集,联络家,CDNUnion,安居客和Sun的Startup解决方案专家; 主题1:动态内容的CDN缓存结论,目前CDN缓存仍然以静态内容... -
开启cdn对某些需要限制访问IP的路径影响及解决方案
2020-07-17 08:20:18最近公司有个论坛因为发展到一个阶段,且因为历史架构原因,应用和数据库没做分离,靠一台服务器硬撑,加上最近爬虫肆虐,影响到了正常服务,为应对这个问题,增加了多种优化和防御措施,其中就有采用cdn对静态资源... -
边缘计算、CDN、海计算、Couldlet和雾计算的区别
2018-11-29 12:22:49本人的硕士方向是边缘计算,也做过一段时间的缓存,但一直都不是很清楚这种技术和CDN服务器到底有什么区别,再加上暑假去上海参加了雾计算大会,更加迷糊了,这两天有机会拜读了施巍松老师的文章《边缘计算:现状与... -
网站cdn加速后访问IP问题
2018-11-26 10:14:57公司网站设了二个服务器,上海和北京的,做了cdn加速 在北京的时候经常会访问到上海的服务器 在上海的时候也会经常访问到北京的服务器 ping 的时候,如果上海ping的上海cdn节点就会很快,ping北京的节点会很慢 ... -
如何利用CDN进行全网加速
2015-07-02 09:51:57CDN是什么? CDN即内容分发网络,主要功能是加快网络数据传输,让用户尽快的看到所需的内容。 不清楚的同学可以继续看百科里...一般国内的大公司现在都已经建设了自己的CDN服务,如:百度、淘宝、腾讯。 目前主要功能 -
由某CDN故障引发的思考2:业务方如何应对那些坑爹的第三方故障
2014-06-05 10:27:31大部分公司的业务规模应该还没有达到所有服务都能够自给自足的程度,而且就算是BAT这些巨头们,很多服务也完全没有必要所有东西都自己做,一是效率问题,二是成本问题。喜欢喝牛奶未必就要自己养头奶牛,所以大部分...
-
使用 Linux 平台充当 Router 路由器
-
切换代理IP时如何保证安全性
-
如何建立完美的顺序表 .docx
-
双色球开奖记录(从2003年到2021年2月28日)手工录入.xls
-
DevOps能力模型
-
寒假PyTorch工具第十五天
-
元宵节趣味知识答题活动小程序
-
某工作室官网PHP源码 带后台功能
-
华测高精度参考站接收机P2-E产品说明书.docx
-
高频电子线路课件.zip
-
UE4 虚幻引擎,C++判断键盘,鼠标是否按下。
-
EV2300-BQ40z50.zip
-
数字签密综述.ppt
-
天空盒子(沙漠,大海,纯色)
-
编译项目时报出已经定义了构造器
-
N10SG OPENCPU MANUAL(1).chm
-
EA_20290101_williams_multicurrencypair_modified20181216.ex4
-
AirWar-10.zip
-
NFS 实现高可用(DRBD + heartbeat)
-
1.8 反射、继承、枚举、异常等知识点