【转载请注明来源_hera】
★squid应用
- 用为缓存
squid用作缓存可以节省宝贵的带宽资源,也可以大大降低服务器的I/O
- 用为代理
squid可以用作正向代理和反向代理
=>正向代理:代理用户
正向代理相当于是一个介于用户端和原始服务器之间的代理服务器(即squid后面是客户端,前面是原始服务器),当客户端无法直接访问原始服务器的时候,但是它能访问代理服务器,这时候它就可以向代理服务器发送一个请求并指定目标为原始服务器,然后代理服务器向原始服务器转交请求并将从原始服务器获得的内容返回给客户端。要想使用正向代理,客户端一般需要做一些特殊的设置。
比如,我是一个用户,假如我想访问一个国外网站,但是无法正常访问,这时候我就可以使用正向代理,将自己的访问目标发送给代理服务器,代理服务器通过访问目标网站获得数据并返回给我。
一般正向代理多用于企业的办公环境中,员工通过代理服务器上网,这样可以大大节省网络的带宽资源。
翻墙、互联网
用 户 ------ 代 理 服 务 器 -------------- 原 始 服 务 器
=>反向代理:代理的服务器
反向代理与正向代理正好相反,即squid后面是服务器,前面是客户端,客户端向反向代理服务器发送普通请求,然后代理服务器会判断要向何处转交请求,当从原始服务器获得数据之后,会将这些数据作为自身服务器的数据返回给客户端。使用反向代理,一般客户端不需要进行相关设置。
一般反向代理用来搭建网站静态项(图片、html、流媒体、js、css等)的缓存服务器,用于网站架构中。
internet 防火墙
客 户 端 ---------- 反 向 代 理 服 务 器 -------- 墙 内 服 务 器
★搭建squid正向代理
- 准备工作
安装相关软件包:yum install -y squid
可以使用squid -v命令查看版本以及编译参数
- 搭建过程
squid相关配置文件 /etc/squid/squid.conf
修改配置文件
vim /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 更改权限
squid -z初始化缓存目录,即创建/data/cache下的一些子目录,该步骤可以省略,启动时自动 创建
/etc/init.d/squid start 启动squid服务
squid -kcheck 可以检测配置文件是否有错(启动服务之后才可以使用)
squid -k rec 可以重新加载配置
service squid restart 重启squid服务
- 服务检测
1. 可以在windows上打开IE浏览器,工具-->internet选项-->连接-->局域网设置,选中为LAN使用代理服务器,点高级,在HTTP那一行输入代理服务器的ip地址和端口(配置文件中的3128即是端口)
tcpdump -nn port 3128 and host ip地址 实现时时监控,检查windows是否使用代理服务器访问
2. 测试:curl -xlocalhost:3128 www.qq.com
curl -xlocalhost:3128 -I ‘链接地址‘ 测试缓存
3.查看缓存文件
find /data/cache -type f
- 设置黑白名单,限制哪些站点可以访问,哪些不可以
acl http proto HTTP
acl good_domain dstdomain .qq.com .baidu.com
http_access allow http good_domain 白名单
http_access deny http !good_domain 其他拒绝访问测试:
[[email protected] ~]# curl -x192.168.16.107:3128 www.baidu.com -I
HTTP/1.0 200 OK -----200正常访问*****************省略************************************
[[email protected] ~]# curl -x192.168.16.107:3128 www.sina.com -I
HTTP/1.0 403 Forbidden -----403访问被拒绝*****************省略************************************
★搭建squid反向代理
- 准备工作
安装相关软件包:yum install -y squid
可以使用squid -v命令查看版本以及编译参数
- 搭建过程
squid相关配置文件 /etc/squid/squid.conf
修改配置文件
vim /etc/squid/squid.conf
http_port 3128 改为 http_port 80 accel vhost vport
并增加下列内容:
cache_peer 61.135.157.156 parent 80 0 originserver name=a #61.135.157.156 qq的ip
cache_peer 61.135.169.125 parent 80 0 originserver name=b
cache_peer_domain a www.qq.com
cache_peer_domain b www.baidu.com
之前增加的域名白/黑名单相关配置去掉
一个域名一个IP即可做反向代理
用户访问本机,本机访问反向代理的服务器
※如果是squid要代理一台web上的所有域名,即一个ip对应多个域名,那么修改格式为:
cache_peer IP地址 80 0 originserver #只需要这一行,cache_peer_domain 都可以省掉
service squid restartg
- 测试
curl -xIP:端口 网址 -I