缓存网页对象,减少重复请求
将互联网请求轮训或按权重分配到内网Web服务器
代理用户请求,避免用户直接访问Web服务器,提高安全
Squid最典型的应用是代理局域网的机器联入互联网,它支持现在流行的网络协议。 Squid的另一项非常出色的功能就是实现反向代理功能。 五.使用Squid配置反向代理(HTTP 加速器) 通过squid配置反向代理主要就是配置“squid.conf”这个配置文件。 其它版本的在UNIX也同样适用。 在Linux中squid如果是以源代码方式安装的话,这个文件一般在“/usr/local/squid/etc/”目录下。 如果是系统自带的squid,一般配置文件在“/etc/squid/”目录下。 1. Squid反向代理单个后台WEB服务器 如果WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络)。
1.编译安装 Squid
yum -y install gcc gcc-c++ make
tar zxvf squid-3.5.28.tar.gz -C /opt/
cd /opt/squid-3.5.28
./configure --prefix=/usr/local/squid \ #指定安装目录路径
--sysconfdir=/etc \ #指定配置文件路径
--enable-arp-acl \ #MAC地址管控,防止客户端使用IP欺骗
--enable-linux-netfilter \ #使用内核过滤
--enable-linux-tproxy \ #支持透明模式
--enable-async-io=100 \ #异步IO,提升存储性能
--enable-err-language="Simplify_Chinese" \ #错误信息的显示语言
--enable-underscore \ #允许URL中有下划线
--disable-poll \ #关闭默认使用 poll 模式
--enable-epoll \ #开启epoll模式提升性能
--enable-gnuregex #使用GNU正则表达式
----------------------------------------------------------------------------------------------------------
编译安装:
- ./configure --prefix=/usr/local/squid \
- --sysconfdir=/etc \
- --enable-arp-acl \
- --enable-linux-netfilter \
- --enable-linux-tproxy \
- --enable-async-io=100 \
- --enable-err-language="Simplify_Chinese" \
- --enable-underscore \
- --disable-poll \
- --enable-epoll \
- --enable-gnuregex
-
- make && make install
-
- ln -s /usr/local/squid/sbin/* /usr/local/sbin/
-
- useradd -M -s /sbin/nologin squid
-
- chown -R squid:squid /usr/local/squid/var/ #此目录用于存放缓存文件
2.修改配置文件:
vim /etc/squid.conf
......
--56行--插入
http_access allow all #放在 http_access deny all 之前,允许任意客户机使用代理服务,控制规则自上而下匹配
http_access deny all
http_port 3128 #用来指定代理服务监听的地址和端口(默认的端口号为 3128)
--61行--插入
cache_effective_user squid #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
cache_effective_group squid #添加,指定账号基本组-----------------------------------------------------------------------------------------
coredump_dir /usr/local/squid/var/cache/squid #指定缓存文件目录
-60行--修改,插入
http_port 192.168.6.156:80 accel vhost vport
cache_peer 192.168.6.170 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.6.169 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.ko.com
#表示对www.ko.com的请求,squid向192.168.6.169和192.168.6.170的80端口发出请求
注解:
http_port 80 accel vhost vport #squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。
accel :反向代理加速模式
vhost :支持域名或主机名来表示代理节点
vport :支持IP和端口来表示代理节点parent :代表为父节点,上下关系,非平级关系
80 :代理内部web服务器的80端口
0 :没有使用icp(电信运营商),表示就一台squid服务器
no-query :不做查询操作,直接获取数据
originserver :指定是源服务器
round-robin :指定 squid 通过轮询方式将请求分发到其中一台父节点
max_conn :指定最大连接数
weight : 指定权重
name :设置别名
systemctl stop httpd #防止 httpd 服务使用的 80 端口号和 squid 反向代理配置的监听端口冲突
systemctl restart squid
安装nginx
页面1:test web1
页面2:test web2
修改客户机主机映射
www.ko.vom 192.168.6.156
实验效果1:
实验效果2
通过刷新会实现轮询的效果,受缓存影响内容一直是web1