Squid是代理软件,可缓存减低IO,可做正向代理(企业使用,降低宽带使用率)、反向代理(网站静态项缓存如图片、流媒体等,用于网站架构)。

   一、Squid正向代理

   ##查看版本号

   squid -v

   #配置squid的配置文件,先清空,后加入

   echo “” > /etc/squid/squid.conf

   vim /etc/squid/squid.conf

加入代码:

 

http_port 3128acl manager proto cache_objectacl localhost src 127.0.0.1/32 ::1acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1acl localnet src 10.0.0.0/8      # RFC1918 possible internal networkacl localnet src 172.16.0.0/12   # RFC1918 possible internal networkacl localnet src 192.168.0.0/16  # RFC1918 possible internal networkacl SSL_ports port 443acl Safe_ports port 80 8080         # httpacl Safe_ports port 21          # ftpacl Safe_ports port 443         # httpsacl CONNECT method CONNECThttp_access allow manager localhosthttp_access deny managerhttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localnet    #与上面定义的localnet对应http_access allow localhost   #与上面定义的localhost对应http_access allow allcache_dir aufs /data/cache 1024 16 256cache_mem 128 MBhierarchy_stoplist cgi-bin ?coredump_dir /var/spool/squidrefresh_pattern ^ftp:           1440    20%     10080   ##配置缓存时间refresh_pattern ^gopher:        1440    0%      1440    ##配置缓存时间refresh_pattern -i (/cgi-bin/|\?) 0     0%      0refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%     2880    ignore-reloadrefresh_pattern .               0       20%     4320

 

###http_port 3128” 指的是,squid服务启动后将要监听的端口,“cache_dir aufs”  这个用来指定本地磁盘上的缓存目录,并制定缓存大小,以M为单位,aufs为缓存格式;cache_mem”它用来规定缓存占用内存的大小;

 

##检查配置文件是否错误,只有在启动后才能使用

squid -kcheck

##初始化缓存目录

mkdir /data/cache

hown -R squid:squid /data/cache/

squid -z

##启动squid

/etc/init.d/squid start

##测试正向代理是否启动成功

 curl -xlocalhost:3128  http://www.baidu.com/ -I

 

##重新加载配置文档

squid -krec

 

##设置白名单,只允许白名单通过,其他不通过,在squid.conf中找到:

##acl CONNECT method CONNECT

##在其下面添加四行:

acl http proto HTTP

acl while_list dstdomain .yichuangshe.net.net

http_access allow http while_list

http_access deny http !while_list

##设置黑名单,跟白名单设置方法一样:

acl http proto HTTP

acl black_list dstdomain .123.com

http_access allow http !black_list

http_access deny http black_list

##重新加载配置文档,测试

squid -kche      ##测试配置文档是否有问题

squid -krec       ##重新加载配置文档

 

二、Squid反向代理

##修改配置文件,把端口修改为80

http_port 80  accel vhost vport    ##这是必需添加的

##然后再增加你要代理的后端真实服务器信息:

cache_peer 14.17.32.211 parent 80 0 originserver name=a

cache_peer 180.97.33.107 parent 80 0 originserver name=b

cache_peer_domain a www.qq.com

cache_peer_domain b www.baidu.com

##其中cache_peer为配置后端的服务器ip以及端口,name后边为要配置的域名,这里和后面的cache_peer_domain相对应。实际的应用中,ip大多为内外ip,而域名也许会有多个,如果是squid要代理一台web上的所有域名,那么就只写一句即可:

cache_peer 120.24.98.198 parent 80 0 originserver

##反向代理主要用于缓存静态项,因为静态项目尤其是图片、流媒体等比较耗费带宽,在中国,联通网访问电信的资源本例就慢,如果再去访问大流量的图片、流媒体那更会慢了,所以如果在联通网配置一个squid反向代理,让联通客户端直接访问这个联通squid,而这些静态项已经被缓存在了squid上,这样就大大加快了访问速度。CDN, 其实它的设计原理就是这样的思路。