千家信息网

squid服务初步窥探

发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,squid服务安装以及简单使用squid是什么Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非
千家信息网最后更新 2024年10月24日squid服务初步窥探

squid服务安装以及简单使用

squid是什么

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。

squid源码包安装

下载地址 http://www.squid-cache.org/Versions/

tar zxvf squid-3.5.27.tar.gzcd squid-3.5.27/./configuremake && make install

squid 配置文件

#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 on

我的配置如下:

最主要的关注一下地区访问

squdi启动

#squid常用命令1   初始化在squid.conf里配置的cache目录    squid -z    如果有错误提示,请检查cache目录的权限,可以更改目录权限    chown -R squid:squid /cache目录2   对squid.conf排错,即验证squid.conf的语法和配置    squid -k parse    如果在squid.conf中有语法或配置错误,这里会返回提示,若无返回,尝试启动squid3   前台启动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 shutdown6   重新引导修改过的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,squid8   修改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缓存,而是从原始服务器获取并返回给访问用户。

运行服务

# /usr/local/squid/sbin/squid -z 使配置文件生效(修改配置文件后需要执行)# /usr/local/squid/sbin/squid -k parse以后台进程的形式启动squid# /usr/local/squid/sbin/squid -s

遇到的问题

  • ERROR: No forward-proxy ports configured.
    解决方案: https://www.cnblogs.com/AloneSword/p/4090827.html
  • WARNING: Cannot write log file: /usr/local/squid/var/logs/cache.log
    /usr/local/squid/var/logs/cache.log: Permission denied
    messages will be sent to 'stderr'.
    解决方案: chmod -R 777 /usr/local/squid/var/logs

推荐参考文章:

  • squid权威中文指南https://www.phpfans.net/manu/Squid/
  • squid配置指南: http://www.phpfans.net/manu/Squid
  • squid3.0做编译安装配置透明代理http://blog.sina.com.cn/s/blog_517e2e1b0100ap1v.html
  • quid介绍及其简单配置: https://blog.51cto.com/linuxme/372960
0