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
    • 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
389  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
164文章 12评论 2点赞 93502浏览
随机文章
nslookup命令常用方式说明
8个月前
休息了2天.
11年前
Mac终端(Terminal)使用快捷键
6年前
SSBC手撕包菜安装配置教程(DHT磁力搜索源码)
5年前
lnmp一键包nginx加装ngx_cache_purge缓存清理模块
1年前
Tags
Apache CentOS CMD DDOS Debian DNS FastCGI Google IIS IP iptables Linux Mac MySQL Nginx Opensource PHP Python Skill Spawn-FCGI SSH Ubuntu Vim VMware VPN web.py Windows 删除 命令 命令提示符 安装 开源 技巧 插件 漏洞 百度 系统 组件 终端 缓存 网络电话 脚本 自建 详解 错误
Meta
  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
Copyright © 2021
Designed by hankin
主页
页面
  • About
博主
ProdigYu 管理员
Something about myself
164 文章 12 评论 93502 浏览
测试
测试