User-Profile-Image
hankin
  • 5
  • 首页
  • 分类
    • Windows
    • Web
    • VoIP
    • Virtualization
    • Trading
    • Smart Home
    • SEO
    • Security
    • Python
    • Program
    • PHP
    • OSX
    • OS
    • OpenSource
    • Nginx
    • MySQL
    • Mood
    • Linux
    • Life
    • Injection
    • Hosting
    • Finance
    • Exploits
    • CDN
  • 页面
    • About
  • 友链
    • 维酷科技
    • Tesra超算网络
Help?

Please contact us on our email for need any support

Support
  • 首页
    首页   ›   Web   ›   CDN   ›   正文
CDN

Squid3.0安装

2012-08-24 16:58:01
2224  0 0

之前一直都是用的Squid2.6的,效果都还不错,对于HTML的加速确实很稳定。
这次新机器直接上3.0,用了几天,目前看来还不错,比Nginx反向代理的速度快不少。

在这里贴一遍借鉴别人的文章,当然实际配置过程中针对我自己的需要做了不少的修改。

1.可以用下述命令获得squid
wget -c http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.20.tar.gz
2.建立squid用户
useradd squid -M -c “Squid user” -d /dev/null -s /sbin/nologin
3. 配制系统环境

在我们的Linux下运行:

# ulimit -n
1024

很显然1024可能无法满足需求,重新设置

# ulimit -HSn 65536
# ulimit -n
65536

需要将ulimit -HSn 65536设置在/etc/rc.d/rc.local中,防止重启后失效, 花费时间来增加这个限制值的大小。否则,squid在高负载时执行性能将很低。

当然你还可以在每一次系统启动后执行上述echo和ulimit命令,或者至少在squid启动之前。假如你使用某个rc.d脚本来启动squid,那是一个放置这些命令的好地方。
临时端口范围

临时端口是TCP/IP栈分配给出去连接的本地端口。换句话说,当squid发起一条连接到另一台服务器,内核给本地socket分配一个端口号。这些本地端口号有特定的范围限制。例如,在FreeBSD上,默认的临时端口范围是1024-5000。

临时端口号的短缺对非常忙的代理服务器(例如每秒数百个连接)来说,会较大的影响性能。这是因为一些TCP连接在它们被关闭时进入TIME_WAIT状态。当连接进入TIME_WATI状态时,临时端口号不能被重用。

你能使用netstat命令来显示有多少个连接进入这个状态:
% netstat -n | grep TIME_WAIT

Proto Recv-Q Send-Q Local Address Foreign Address (state)

tcp4 0 0 192.43.244.42.19583 212.67.202.80.80 TIME_WAIT

tcp4 0 0 192.43.244.42.19597 202.158.66.190.80 TIME_WAIT

tcp4 0 0 192.43.244.42.19600 207.99.19.230.80 TIME_WAIT

tcp4 0 0 192.43.244.42.19601 216.131.72.121.80 TIME_WAIT

tcp4 0 0 192.43.244.42.19602 209.61.183.115.80 TIME_WAIT

tcp4 0 0 192.43.244.42.3128 128.109.131.47.25666 TIME_WAIT

tcp4 0 0 192.43.244.42.3128 128.109.131.47.25795 TIME_WAIT

tcp4 0 0 192.43.244.42.3128 128.182.72.190.1488 TIME_WAIT

tcp4 0 0 192.43.244.42.3128 128.182.72.190.2194 TIME_WAIT

注意这个例子中既有客户端连接又有服务器端的连接。客户端连接有3128作为临时端口号,服务器端连接有80作为远程主机的端口号。临时端口号出现在本地地址栏里。在该例子里,它们是19000秒。

在Linux上,简单的写一对数字到下列指定文件:

# echo “1024 40000″ > /proc/sys/net/ipv4/ip_local_port_range

不要忘记将这些命令加到你的系统启动脚本中,以使机器每一次重启后都生效。

4. 编译安装

tar -zxvf squid-3.0.STABLE13.tar.gz

cd squid-3.0.STABLE13

./configure -prefix=/usr/local/squid3 -enable-dlmalloc -enable-gnuregex -enable-async-io -enable-removal-policies=’heap,lru’ -enable-delay-pools -disable-snmp -enable-storeio=’ufs,aufs,diskd,null’ -disable-wccp -enable-kill-parent-hack -disable-select -enable-auth=basic -with-aio -disable-ident-lookup -with-filedescriptors=65536 -enable-err-languages=”Simplify_Chinese” -enable-default-err-languages=”Simplify_Chinese”

make

make install

后面每一参数,对有对应的意思。这里就不在解释,网上有很多。

其实squid最重要的就一个squid.conf的配制问题。

在/usr/local/squid3/etc/squid.conf

参照下面的示例来理解配置文件
visible_hostname squid1.ihompy.com
#设定squid的主机名,如无此项squid将无法启动
http_port 80 accel vhost vport
#设定squid为accel加速模式,vhost必须要加.否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误
cache_peer www.contentchina.com parent 80 0 no-query originserver name=contentchina
cache_peer bbs.contentchina.com parent 80 0 no-query originserver name=bbs
cache_peer www.ihompy.com parent 80 0 no-query originserver name=ihompy
#定义不同的父节点,将节点设为no-query以及originserver说明这些节点是实际服务器
cache_peer_domain contentchina www.contentchina.com
cache_peer_domain bbs bbs.contentchina.com
cache_peer_domain ihompy www.ihompy.com
#设定不同域名转发到不同的cache_peer上,如果没有这项.不同域名的域名可能被分发到同一台服务器上.
acl all src 0.0.0.0/0.0.0.0
http_access allow all
#允许所有客户端访问
cache_log /var/log/squid/cache.log
#记录日志
#***********ACL存取控制*************
acl QueryString url_regex \.php?
#***********缓冲存取控制*************
no_cache deny QueryString
#不对符合QueryString的ACL内容进行缓冲
#***********性能优化配置*************
maximum_object_size 320010 KB
#大于此容量的对象将不会被保存在磁盘上,默认大小是4M,如果squid服务器用于缓冲flash等大型文件,建议将此值变大.否则过大的文件在下次重启后将需要重新获取
maximum_object_size_in_memory 100 KB
#最大位于内存中的对象的大小,默认大小是8K,如果服务器内存很大.可以适当提高此值的大小,建议根据网站的80%图片的大小来定.或者根据WEB服务器实际存取文件中最常访问的文件大小来定制
#***********其他可选配置*************
dns_nameservers 10.0.0.1 192.172.0.4
#配置DNS服务器地址.获取后端时将从此dns获取IP地址
cache_mgr code_tin@msn.com
#在错误日志中出现的webmaster地址.

Squid 3.0与2.6一样.相较2.5的accel模式下配置要简单许多
只要设置不同的后端,cache_peer parent originserver
就可以进行反向代理
而不再需要httpd_accel系列参数的配置.
配置squid时最好制定内部dns,或者修改/etc/hosts文件
否则squid可能会回环访问其自身而出现问题.

自己的配置过程:

http_port 80 选项 http_port 指定squid监听HTTP请求的端口,一般都设置成80端口,这样使用户感觉不到反向代理的存在,就像访问真正
的WEB服务器一样。

我配置的是:http_port 80 accel vhost vport

cache_mem 128 MB 共享内存大小(squid在提供服务的时候所使用的内存)

maximum_object_size_in_memory 512 KB 最大缓存文件大小,超过此值则不缓存

memory_replacement_policy lru 替换机制 (lru叫做 最近不常用的单元 unit一般就是常说的object 也就是当cache中的内容比如内存或硬盘达到上限时的 那么就需要进行数据的换进和换出工作)

cache_dir null /tmp cache_dir存储cache内容也就是object的物理存放点 

cache_dir ufs /tmp1 10000 16 256 (/tmp size L1 L2)
100G其中1层目录16个 并且每个1层目录下又有256个2层目录[或者说子目录]
#磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10G
ufs是一种文件存储方式 因为os一般都是从内存获取数据 那么内存的东西必须最后写的硬盘上~
sync 同步的时候用的ufs 那么squid也是一样
ufs一般是同时写入内存和硬盘
注意:size是按照M为单位的也就这个目录中最大存储容量的上限

max_open_disk_fds 0

minimum_object_size 0 KB

maximum_object_size 4096 KB

logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %

ProdigYu
180文章 77评论 4点赞 554161浏览
随机文章
休息了2天.
15年前
安装配置rsync实现服务器数据备份同步
11年前
用Bind9架设自己的智能DNS
15年前
Linux下压缩与解压.zip和.rar及.7z文件
15年前
CentOS更新不升级内核设置
8年前
Tags
Apache CentOS CMD DDOS Debian DNS Docker FastCGI Google IIS IP iptables Linux Mac MySQL Nginx Opensource PHP Python Skill SSH Ubuntu Vim VMware VPN web.py Windows 删除 命令 命令提示符 安装 开源 技巧 插件 漏洞 百度 系统 组件 终端 缓存 网络电话 脚本 自建 详解 错误
Meta
  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
Copyright © 2025
主页
页面
  • About
博主
ProdigYu 管理员
Something about myself
180 文章 77 评论 554161 浏览
测试
测试