首页 > 代码库 > 配置Squid代理服务器

配置Squid代理服务器

1. 什么是squid

Squid是一个支持HTTP、HTTPS、FTP等服务的缓存代理软件,它可以加快客户端网页浏览的速度,提高客户机的访问命中率,节省宝贵的带宽资源。squid不仅可以做正向代理,还可以利用反向代理技术提高网站访问性能,反向代理结合智能DNS解析就能实现一个最基本的CDN。


2. 搭建squid正向代理

正向代理一般用于企业内部访问外网,就是我们通常说的通过代理服务器上网,通过缓存页面数据可以节省带宽,提高上网速度。


squid官方网站为 http://www.squid-cache.org/,可以下载到最新的软件版本。

这里我们使用yum安装squid

yum install -y squid

清除squid.conf里的内容

> /etc/squid/squid.conf
vi /etc/squid/squid.conf
加入如下配置

 http_port 3128
 acl manager proto cache_object
 acl localhost src 127.0.0.1/32 ::1
 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
 acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
 acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
 acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
 acl SSL_ports port 443
 acl Safe_ports port 80 8080         # http
 acl Safe_ports port 21          # ftp
 acl Safe_ports port 443         # https
 acl CONNECT method CONNECT
 http_access allow manager localhost
 http_access deny manager
 http_access deny !Safe_ports
 http_access deny CONNECT !SSL_ports
 http_access allow localnet
 http_access allow localhost
 http_access allow all
 cache_dir aufs /data/cache 1024 16 256
 cache_mem 128 MB
 hierarchy_stoplist cgi-bin ?
 coredump_dir /var/spool/squid
 refresh_pattern ^ftp:           1440    20%     10080
 refresh_pattern ^gopher:        1440    0%      1440
 refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
 refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%     2880    ignore-reload
 refresh_pattern .               0       20%     4320


创建缓存目录

mkdir  /data/cache

更改权限

chown -R squid:squid /data/cache

启动服务

/etc/init.d/squid start


测试:

curl -x192.168.1.1:3128 www.baidu.com

[root@www ~]# curl -x192.168.1.1:3128 www.163.com -I
HTTP/1.0 200 OK
Date: Fri, 28 Apr 2017 07:32:26 GMT
Server: openresty
Content-Type: text/html; charset=GBK
Vary: Accept-Encoding,User-Agent,Accept
Expires: Fri, 28 Apr 2017 07:33:46 GMT
Cache-Control: max-age=80
X-Via: 1.0 czdx86:5 (Cdn Cache Server V2.0), 1.0 xz53:4 (Cdn Cache Server V2.0)
Age: 5
X-Cache: HIT from www
X-Cache-Lookup: HIT from www:3128
Via: 1.1 cache.163.com:80 (squid), 1.0 www (squid/3.1.23)
Connection: keep-alive

返回状态码200,说明已经可以通代理服务器上网。


在ie里使用代理服务器需进行如下设置:

在IE里点[工具]->[Internet选项]->[连接]
找到"如果要为连接配置代理服器,请选择"设置",点[设置]
技术分享


配置透明代理

普通代理需要在IE里设置代理服务器,比较麻烦,使用透明代理只需设置网关就OK了。

在squid服务器上做以下两步:

1) 打开端口转发
echo "1" > /proc/sys/net/ipv4/ip_forward

2)设置防火墙规则
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128


在windows电脑上配置网关,设置为代理服务器的ip地址即可直接上网

技术分享

一些常用命令

squid -v  查看版本以及编译参数

squid -k check 可以检测配置文件是否有错
squid -k reconfig 可以重新加载配置
squid -z 初始化缓存目录,启动时会自动初始化


设置白名单
 acl http proto HTTP
 acl good_domain dstdomain .badu.com www.qq.com:
 http_access allow http good_domain
 http_access deny http !good_domain


设置黑名单
 acl http proto HTTP
 acl bad_domain dstdomain www.jd.com www.taobao.com
 http_access deny http bad_domain

3. 搭建squid反向代理

先准备好一台web服务器,ip为192.168.1.1,

这里为一台nginx服务器,和squid装在同一台服务器上。

修改nginx端口号

vi /usr/local/nginx/conf/nginx.conf
找到
listen 80;
改成
listen 8080;

保存退出后重启

/etc/init.d/nginx restart


配置squid


vi /etc/squid/squid.conf

找到
http_port 3128
改为
http_port 80 accel vhost vport

增加如下内容:
cache_peer 192.168.1.1 parent 8080 0 originserver name=a
cache_peer_domain a www.test.com


保存退出后重启

/etc/init.d/squid restart


如果之前增加了黑/白名单相关配置去掉;

如果是squid要代理一台web上的所有域名,那么就写成这样:

cache_peer 192.168.1.1 parent  8080 0 originserver

只需要这一行,cache_peer_domain  都可以省掉。


测试前,绑定host

vi /etc/hosts
加上
192.168.1.1 www.test.com


测试:

curl www.test.com/1.png -I

[root@www ~]# curl www.test.com/1.png -I
HTTP/1.0 200 OK
Server: nginx/1.10.3
Date: Wed, 26 Apr 2017 18:39:32 GMT
Content-Type: image/png
Content-Length: 4425
Last-Modified: Wed, 26 Apr 2017 18:39:28 GMT
ETag: "5900e960-1149"
Accept-Ranges: bytes
Age: 35
X-Cache: HIT from www
X-Cache-Lookup: HIT from www:80
Via: 1.0 www (squid/3.1.23)
Connection: keep-alive

返回结果说明缓存已被命中,反向代理配置成功。

配置Squid代理服务器