squid的简单介绍、配置_51CTO博客_squid配置详解


本站和网页 http://blog.51cto.com/linux998/2074550 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

squid的简单介绍、配置_51CTO博客_squid配置详解
squid的简单介绍、配置
关注
雨后龙井
文章目录
squid的概念
squid代理的作用
工作流程
Squid各种代理的定义
正向代理
标准的代理缓冲服务器
透明代理缓冲服务器
反向代理
反向代理缓冲器
正向代理与反向代理的区别
概念
用途
安全性
Squid主要组成部分
squid常用配置选项
squid中的访问控制
ACL元素类型
ACL格式
访问条目
Squid.conf配置文件详解
Squid常用命令
Squid命中率分析
定期清理swap.state内无效数据
squid的简单介绍、配置
转载
雨后龙井
2018-03-02 10:32:13
文章标签
squid 缓存
文章分类
其它
系统/运维
squid的简单介绍squid的概念squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,
squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。squid代理的作用通过缓存的方式为用户提供Web访问加速对用户的Web访问进行过滤控制工作流程当代理服务器中有客户端需要的数据时:a. 客户端向代理服务器发送数据请求;b. 代理服务器检查自己的数据缓存;c. 代理服务器在缓存中找到了用户想要的数据,取出数据;d. 代理服务器将从缓存中取得的数据返回给客户端。当代理服务器中没有客户端需要的数据时:客户端向代理服务器发送数据请求;代理服务器检查自己的数据缓存;代理服务器在缓存中没有找到用户想要的数据;代理服务器向Internet 上的远端服务器发送数据请求;远端服务器响应,返回相应的数据;代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。Squid代理服务器工作在TCP/IP应用层Squid各种代理的定义正向代理标准的代理缓冲服务器一个标准的代理缓冲服务被用于缓存静态的网页到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指名代理服务器的IP地址和端口号。客户端上网时,每次都把请求发送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发送给客户端浏览器。透明代理缓冲服务器透明代理缓冲服务器和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因此不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。反向代理反向代理缓冲器反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发给用户。这种方式通过降低了WEB服务器的请求数从而降低了WEB服务器的负载。正向代理与反向代理的区别概念正向代理:对于原始服务器而言,就是客户端的代言人反向代理:对于客户端而言,就像是原始服务器用途正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。安全性正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。Squid主要组成部分服务名:squid主程序:/usr/sbin/squid配置目录:/etc/squid主配置文件:/etc/squid/squid.conf监听tcp端口号:3128默认访问日志文件:/var/log/squid/access.logsquid常用配置选项/etc/squid/squid.confhttp_port 3128 (还可以只监听一个IP http_port 192.168.0.1:3128)cache_mem 64MB #缓存占内存大小maximum_object_size 4096KB #最大缓存块reply_body_max_size 1024000 allow all #限定下载文件大小access_log /var/log/squid/access.log #访问日志存放的地方visible_hostname proxy.test.xom #可见的主机名cache_dir ufs /var/spool/squid 100 16 256 #ufs:缓存数据的存储格式#/var/spool/squid 缓存目录#100:缓存目录占磁盘空间大小(M)#16:缓存空间一级子目录个数#256:缓存空间二级子目录个数cache_mgr webmaster@test.com #定义管理员邮箱http_access deny all #访问控制squid中的访问控制使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。squid访问控制有两个要素:ACL元素和访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。ACL元素类型src:源地址(即客户机IP地址)dst:目标地址(即服务器IP地址)srcdomain:源名称(即客户机名称)dstdomain:目标名称(即服务器名称)time:一天中的时刻和一周内的一天url_regex:URL规则表达式匹配urlpath_regex:URL-path规则表达式匹配,略去协议和主机名proxy_auth:通过外部程序进行用户验证maxconn:单一IP的最大连接数ACL格式为了使用控制功能,必须先设置ACL规则并应用。ACL声明的格式如下:acl acl_element_name type_of_acl_element values_to_acl注:acl_element_name 可以是任一个在ACL中定义的名称任何两个ACL元素不能用相同的名字每个ACL由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算连接;换言之,即任一ACL元素的值被匹配,则这个ACL元素即被匹配。并不是所有ACL元素都能使用访问列表中的全部类型不同的ACL元素写在不同行中,squid将把他们组合在一个列表中访问条目我们可以使用许多不同的访问条目。下面是我们常用的几个:http_access:允许HTTP访问no_cache:定义对缓存请求的响应。访问列表的规则由一些类似'allow'或‘deny’的关键字构成,用以允许或拒绝向特定或一组ACL元素提供服务。一个访问列表可以由多条规则组成如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。一个访问条目中所有元素将用逻辑与运算连接http_access Action 声明1 AND 声明2 AND 声明 OR.http_access Action 声明3多个http_accesss声明间用或运算连接,但每个访问条目的元素间用与运算连接。列表中的规则总是遵循由上而下的顺序这些规则按照他们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配就立即结束。Squid.conf配置文件详解#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协议为httpacl localhost src 127.0.0.1/255.255.255.255 #允午本机IPacl to_localhost dst 127.0.0.1 #允午目的地址为本机IPacl Safe_ports port 80 # 允许安全更新的端口为80acl CONNECT method CONNECT #请求方法以CONNECThttp_access allow all #允许所有人使用该代理.因为这里是代理加速web服务器http_reply_access allow all #允许所有客户端使用该代理acl OverConnLimit maxconn 16 #限制每个IP最大允许16个连接,防止攻击http_access deny OverConnLimiticp_access deny all #禁止从邻居服务器缓冲内发送和接收ICP请求.miss_access allow all #允许直接更新请求ident_lookup_access deny all #禁止lookup检查DNShttp_port 8080 transparent #指定Squid监听浏览器客户请求的端口号。hierarchy_stoplist cgi-bin ? #用来强制某些特定的对象不被缓存,主要是处于安全的目的。acl QUERY urlpath_regex cgi-bin \?cache deny QUERYcache_mem 1 GB #这是一个优化选项,增加该内存值有利于缓存。应该注意的是: #一般来说如果系统有内存,设置该值为(n/)3M。现在是3G 所以这里1Gfqdncache_size 1024 #FQDN 高速缓存大小maximum_object_size_in_memory 2 MB #允许最大的文件载入内存memory_replacement_policy heap LFUDA #动态使用最小的,移出内存cachecache_replacement_policy heap LFUDA #动态使用最小的,移出硬盘cachecache_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 地址高速缓存大小 2Mipcache_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 squidcache_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_serveracl apache rep_header Server ^Apache #允许apache的编码broken_vary_encoding allow apacherequest_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 squidicp_port 0 #指定Squid从邻居服务器缓冲内发送和接收ICP请求的端口号。 #这里设置为0是因为这里配置Squid为内部Web服务器的加速器, #所以不需要使用邻居服务器的缓冲。0是禁用# cache_peer 设置允许更新缓存的主机,因是本机所以127.0.0.1cache_peer 127.0.0.1 parent 80 0 no-query default multicast-responder no-netdb-exchangecache_peer_domain 127.0.0.1 hostname_aliases 127.0.0.1error_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 tianyahttp_access deny tianyadeny_info tianya#阻止baidu蜘蛛acl baidu req_header User-Agent Baiduspiderhttp_access deny baidu#限制同一IP客户端的最大连接数acl OverConnLimit maxconn 128http_access deny OverConnLimit#防止被人利用为HTTP代理,设置允许访问的IP地址acl myip dst 222.18.63.37http_access deny !myip#允许本地管理acl Manager proto cache_objectacl Localhost src 127.0.0.1 222.18.63.37http_access allow Manager Localhostcachemgr_passwd 53034338 allhttp_access deny Manager#仅仅允许80端口的代理acl all src 0.0.0.0/0.0.0.0acl Safe_ports port 80 # httphttp_access deny !Safe_portshttp_access allow all#Squid信息设置visible_hostname happy.swjtu.edu.cncache_mgr ooopic2008@qq.com#基本设置cache_effective_user squidcache_effective_group squidtcp_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 0hierarchy_stoplist cgi-bin ?acl QUERY urlpath_regex cgi-bin \? .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .execache deny QUERYacl apache rep_header Server ^Apachebroken_vary_encoding allow apacherefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern . 0 20% 4320cache_store_log nonepid_filename /usr/local/squid/var/logs/squid.pidemulate_httpd_log onSquid常用命令初始化在squid.conf里配置的cache目录squid -z如果有错误提示,请检查cache目录的权限,可以更改目录权限chown -R squid:squid /cache目录对squid.conf排错,即验证squid.conf的语法和配置squid -k parse如果在squid.conf中有语法或配置错误,这里会返回提示,若无返回,尝试启动squid前台启动squid,并输出启动过程/usr/local/squid/sbin/squid -N -d1如果有ready to server reques相关信息,说明squid启动成功然后ctrl+c ,停止squid,并以后台运行的方式启动它启动squid在后台运行squid -s可以使用ps -ax | grep squid 来查看squid进程是否存在停止squidsquid -k shutdown重新引导修改过的squid.confsquid -k reconfigure -f /XXX/squid.conf当squid进行配置更改后,可以使用该命令进行squid配置重载把squid添加到系统启动项vim /etc/rc.local/usr/local/squid/sbin/squid -s修改cache缓存目录的权限chown -R squid.squid /cache目录cache缓存目录根据自己的配置更改,squid用户和组是squid,squid修改squid日志目录的权限chown -R squid.squid 定义的日志文件所在目录这一步并不是适合每一个使用squid的用户,意为让squid有权限在该目录里进行写操作查看你的日志文档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缓存,而是从原始服务器获取并返回给访问用户。Squid命中率分析/usr/local/squid/bin/squidclient -p 80 mgr:info/usr/local/squid/bin/squidclient -p 80 mgr:5min可以看到详细的性能情况,其中PORT是你的proxy的端口,5min可以是60min取得squid运行状态信息: squidclient -p 80 mgr:info取得squid内存使用情况: squidclient -p 80 mgr:mem取得squid已经缓存的列表:squidclient -p 80 mgr:bjects. use it carefully,it may crash取得squid的磁盘使用情况:squidclient -p 80 mgr:diskd强制更新某个url:squidclient -p 80 -m PURGE http://www.xxx.com/xxx.php更多的请查看:squidclient-h 或者 squidclient -p 80 mgr:查命中率: squidclient -h IP(具体侦听IP) -p 80(具体侦听端口) mgr:info定期清理swap.state内无效数据/path/to/squid/sbin/squid -k rotate -f /path/to/squid/conf_filevi /etc/crontab0 0 * * * root /usr/local/sbin/squid -k rotate -f /usr/local/etc/squid/squid1.conf当squid应用运行了一段时间之后,cache_dir对应的swap.state文件就会变得越来越大,里面的无效接口数据越来越多,这可能影响squid的响应时间,因此需要使用squid清理swap.state里面的无效数据,减少swap.state的大小。
打赏
收藏
评论
分享
举报
上一篇:DHCP报文类型
下一篇:查找企业网中非法接入的WIFI设备
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
全部评论
()
最热
最新
相关文章
squid日志之access.log格式+内容
Squid最重要的日志文件就是访问日志,其访问路径为“/var/log/squid/access.log”。该日志文件记录了客户使用代理服务器的许多有用信息,包括使用时间、请求的内容、客户端信息等。该文件的格式如下:time eclapsed remotehost code/status bytes method URL rfc931 peersta
test
squid access.log中Squid返回给客户端的结果编码
TCP_HITSquid发现请求资源的貌似新鲜的拷贝,并将其立即发送到客户端。TCP_MISSSquid没有请求资源的cache拷贝。TCP_REFERSH_HITSquid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器。原始服务器返回304(未修改)响应,指示squid的拷贝仍旧是新鲜的。TCP_REF_FAIL_HITSquid发现请求资源的貌似陈旧的拷贝,并发送确认请求到原始服务器
squid
log
access
Squid access.log 转发到其他syslog服务器(OSSIM)
1、修改/etc/squid/squid.conf 类似下列信息: access_log /var/log/squid/access.log squidaccess_log syslog:local4.info squid 重启squid #/etc/init.d/squid res
职场
休闲
syslog
转发
squid
一、调整内核修改文件描述符查看文件描述符大小 ulimit –Sn 查看soft nofile ulimit –Hn 查看hard nofile 修改文件描述符
squid
缓存
雨后龙井
关注
私信
近期文章
1.Day16_02_ES教程之ElasticSearch安装
2.金融信息科技服务外包风险管理 团体标准 学习记录 和下载地址
3.一个时代的印记:还记得那些年我们逃课去的网吧
4.Day03_05_Docker教程之Docker仓库
5.Day11_05_Redis教程之Redis命令大全
文章目录
squid的概念
squid代理的作用
工作流程
Squid各种代理的定义
正向代理
标准的代理缓冲服务器
透明代理缓冲服务器
反向代理
反向代理缓冲器
正向代理与反向代理的区别
概念
用途
安全性
Squid主要组成部分
squid常用配置选项
squid中的访问控制
ACL元素类型
ACL格式
访问条目
Squid.conf配置文件详解
Squid常用命令
Squid命中率分析
定期清理swap.state内无效数据
签到领勋章
返回顶部
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
具体原因
包含不真实信息
涉及个人隐私
原文链接(必填)
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M
取消
确认
已经收到您得举报信息,我们会尽快审核
打赏
收藏
评论
分享
51CTO首页
内容精选
博客
学堂
精培
企业培训
CTO训练营
开源基础软件社区
LeaTech全球CTO领导力峰会
移动端
公众号矩阵
博客
免费课程
课程排行
直播课
软考学堂
精品班
厂商认证
IT技术
2022年软考
PMP项目管理
在线学习
企业服务
CTO训练营
技术经理研习营
LeaTech峰会
文章
资源
问答
开源课堂
专栏
直播
51CTO博客
首页
关注
排行榜
订阅专栏
学堂
精培
开源社区
CTO训练营
51CTO
班级博客
登录注册
手机随时阅读
写文章
搜索历史
清空
热门搜索
查看【
】的结果
Copyright 2005-2022 51CTO.COM
版权所有 京ICP证060544号
关于我们
官方博客
意见反馈
了解我们
全部文章
在线客服
网站地图
热门标签
友情链接
开源基础软件社区
51CTO学堂
51CTO
汽车开发者社区