Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和通常的代理缓存软件不一样,Squid用一个单独的、非模块化的、I/O驱动的进程来处理全部的客户端请求。php
下载地址 http://www.squid-cache.org/Versions/html
tar zxvf squid-3.5.27.tar.gz cd squid-3.5.27/ ./configure make && make install
#acl all src 0.0.0.0/0.0.0.0 and http_access allow all选项定义了一个访问控制列表。详细状况参见和Squid软件 #携带的文档。这里的访问控制列表容许全部对代理服务的访问,由于这里该代理是加速web服务器。 acl all src 0.0.0.0/0.0.0.0 #容许全部IP访问 acl manager proto http #manager url协议为http acl localhost src 127.0.0.1/255.255.255.255 #允午本机IP acl to_localhost dst 127.0.0.1 #允午目的地址为本机IP acl Safe_ports port 80 # 容许安全更新的端口为80 acl CONNECT method CONNECT #请求方法以CONNECT http_access allow all #容许全部人使用该代理.由于这里是代理加速web服务器 http_reply_access allow all #容许全部客户端使用该代理 acl OverConnLimit maxconn 16 #限制每一个IP最大容许16个链接,防止*** http_access deny OverConnLimit icp_access deny all #禁止从邻居服务器缓冲内发送和接收ICP请求. miss_access allow all #容许直接更新请求 ident_lookup_access deny all #禁止lookup检查DNS http_port 8080 transparent #指定Squid监听浏览器客户请求的端口号。 hierarchy_stoplist cgi-bin ? #用来强制某些特定的对象不被缓存,主要是处于安全的目的。 acl QUERY urlpath_regex cgi-bin \? cache deny QUERY cache_mem 1 GB #这是一个优化选项,增长该内存值有利于缓存。应该注意的是: #通常来讲若是系统有内存,设置该值为(n/)3M。如今是3G 因此这里1G fqdncache_size 1024 #FQDN 高速缓存大小 maximum_object_size_in_memory 2 MB #容许最大的文件载入内存 memory_replacement_policy heap LFUDA #动态使用最小的,移出内存cache cache_replacement_policy heap LFUDA #动态使用最小的,移出硬盘cache cache_dir ufs /home/cache 5000 32 512 #高速缓存目录 ufs 类型 使用的缓冲值最大允午1000MB空间, #32个一级目录,512个二级目录 max_open_disk_fds 0 #容许最大打开文件数量,0 无限制 minimum_object_size 1 KB #允午最小文件请求体大小 maximum_object_size 20 MB #允午最大文件请求体大小 cache_swap_low 90 #最小容许使用swap 90% cache_swap_high 95 #最多容许使用swap 95% ipcache_size 2048 # IP 地址高速缓存大小 2M ipcache_low 90 #最小容许ipcache使用swap 90% ipcache_high 95 #最大容许ipcache使用swap 90% access_log /var/log/squid/access.log squid #定义日志存放记录 cache_log /var/log/squid/cache.log squid cache_store_log none #禁止store日志 emulate_httpd_log on #将使Squid仿照Web服务器的格式建立访问记录。若是但愿使用 #Web访问记录分析程序,就须要设置这个参数。 refresh_pattern . 0 20% 4320 override-expire override-lastmod reload-into-ims ignore-reload #更新cache规则 acl buggy_server url_regex ^http://.... http:// #只容许http的请求 broken_posts allow buggy_server acl apache rep_header Server ^Apache #容许apache的编码 broken_vary_encoding allow apache request_entities off #禁止非http的标分准请求,防止*** header_access header allow all #容许全部的http报头 relaxed_header_parser on #不严格分析http报头. client_lifetime 120 minute #最大客户链接时间 120分钟 cache_mgr sky@test.com #指定当缓冲出现问题时向缓冲管理者发送告警信息的地址信息。 cache_effective_user squid #这里以用户squid的身份Squid服务器 cache_effective_group squid icp_port 0 #指定Squid从邻居服务器缓冲内发送和接收ICP请求的端口号。 #这里设置为0是由于这里配置Squid为内部Web服务器的加速器, #因此不须要使用邻居服务器的缓冲。0是禁用 # cache_peer 设置容许更新缓存的主机,因是本机因此127.0.0.1 cache_peer 127.0.0.1 parent 80 0 no-query default multicast-responder no-netdb-exchange cache_peer_domain 127.0.0.1 hostname_aliases 127.0.0.1 error_directory /usr/share/squid/errors/Simplify_Chinese #定义错误路径 always_direct allow all # cache丢失或不存在是容许全部请求直接转发到原始服务器 ignore_unknown_nameservers on #开反DNS查询,当域名地址不相同时候,禁止访问 coredump_dir /var/log/squid #定义dump的目录 max_filedesc 2048 #最大打开的文件描述 half_closed_clients off #使Squid在当read再也不返回数据时当即关闭客户端的链接。 #有时read再也不返回数据是因为某些客户关闭TCP的发送数据 #而仍然保持接收数据。而Squid分辨不出TCP半关闭和彻底关闭。 buffered_logs on #若打开选项“buffered_logs”能够稍稍提升加速某些对日志文件的写入,该选项主要是实现优化特性。 #防止天涯盗链,转嫁给百度 acl tianya referer_regex -i tianya http_access deny tianya deny_info tianya #阻止baidu蜘蛛 acl baidu req_header User-Agent Baiduspider http_access deny baidu #限制同一IP客户端的最大链接数 acl OverConnLimit maxconn 128 http_access deny OverConnLimit #防止被人利用为HTTP代理,设置容许访问的IP地址 acl myip dst 222.18.63.37 http_access deny !myip #容许本地管理 acl Manager proto cache_object acl Localhost src 127.0.0.1 222.18.63.37 http_access allow Manager Localhost cachemgr_passwd 53034338 all http_access deny Manager #仅仅容许80端口的代理 acl all src 0.0.0.0/0.0.0.0 acl Safe_ports port 80 # http http_access deny !Safe_ports http_access allow all #Squid信息设置 visible_hostname happy.swjtu.edu.cn cache_mgr ooopic2008@qq.com #基本设置 cache_effective_user squid cache_effective_group squid tcp_recv_bufsize 65535 bytes #2.6的反向代理加速配置 cache_peer 127.0.0.1 parent 80 0 no-query originserver #错误文档 error_directory /usr/local/squid/share/errors/Simplify_Chinese #单台使用,不使用该功能 icp_port 0 hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe cache deny QUERY acl apache rep_header Server ^Apache broken_vary_encoding allow apache refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 cache_store_log none pid_filename /usr/local/squid/var/logs/squid.pid emulate_httpd_log on
个人配置以下:
最主要的关注一下地区访问linux
#squid经常使用命令 1 初始化在squid.conf里配置的cache目录 squid -z 若是有错误提示,请检查cache目录的权限,能够更改目录权限 chown -R squid:squid /cache目录 2 对squid.conf排错,即验证squid.conf的语法和配置 squid -k parse 若是在squid.conf中有语法或配置错误,这里会返回提示,若无返回,尝试启动squid 3 前台启动squid,并输出启动过程 /usr/local/squid/sbin/squid -N -d1 若是有ready to server reques相关信息,说明squid启动成功 而后ctrl+c ,中止squid,并之后台运行的方式启动它 4 启动squid在后台运行 squid -s 可使用ps -ax | grep squid 来查看squid进程是否存在 5 中止squid squid -k shutdown 6 从新引导修改过的squid.conf squid -k reconfigure -f /XXX/squid.conf 当squid进行配置更改后,可使用该命令进行squid配置重载 7 把squid添加到系统启动项 vim /etc/rc.local /usr/local/squid/sbin/squid -s 修改cache缓存目录的权限 chown -R squid.squid /cache目录 cache缓存目录根据本身的配置更改,squid用户和组是squid,squid 8 修改squid日志目录的权限 chown -R squid.squid 定义的日志文件所在目录 这一步并非适合每个使用squid的用户,意为让squid有权限在该目录里进行写操做 9 查看你的日志文档 more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT 该指令能够看到在squid运行过程当中,有那些文件被squid缓存到内存中,并返回给访问用户。 more /usr/local/squid/var/logs/access.log | grep TCP_HIT 该指令能够看到在squid运行过程当中,有那些文件被squid缓存到cache目录中,并返回给访问用户。 more /usr/local/squid/var/logs/access.log | grep TCP_MISS 该指令能够看到在squid运行过程当中,有那些文件没有被squid缓存,而是从原始服务器获取并返回给访问用户。
运行服务web
# /usr/local/squid/sbin/squid -z 使配置文件生效(修改配置文件后须要执行) # /usr/local/squid/sbin/squid -k parse 之后台进程的形式启动squid # /usr/local/squid/sbin/squid -s
推荐参考文章:apache