一:定义
Squid作为代理服务软件,其主要功能是使用代理上网可以节约紧缺的IP地址资源,而且可以阻断外部主机对内部主机的访问,有一定的安全性,但是如果想让互联上的主机访问内部网的主机资源(例如:web站点),又想使内部主机免受外部网主机攻击,一般的代理服务是不能实现的,这就需要反向代理来实现。通过squid反向代理可以加速网站的访问速度,可以将不同的URL请求分发到后台不同的Web服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全。
二:工作原理
反向代理服务器位于本地WEB 服务器和Internet 之间,当用户浏览器发出一个HTTP 请求时,通过域名解析将请求定向到反向代理服务器(如果要实现多个WEB 服务器的反向代理,需要将多个WEB 服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求,反向代理一般只缓存可缓冲的数据(比如html 网页和图片等),而一些CGI 脚本程序或者ASP 之类的程序不缓存,它根据从WEB 服务器返回的HTTP 头标记来缓冲静态页面。
squid服务器配置反向代理,客户机添加squid代理,然后访问squid服务器域名时跳转到web服务器页面。以轮询的方式依次显示web1、web2
三:实验过程
Squid服务器配置
[root@localhost ~]# hostnamectl set-hostname squid
[root@localhost ~]# su
[root@squid ~]# mkdir /abc
[root@squid ~]# mount.cifs //192.168.253.10/share /abc
[root@squid ~]# cd /abc
[root@squid abc]# tar zxvf squid-3.4.6.tar.gz -C /opt
[root@squid abc]# cd squid-3.4.6
[root@squid squid-3.4.6]# yum install gcc gcc-c++ -y
[root@squid squid-3.4.6]# ./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 \
--enable-poll \
--enable-gnuregex
[root@squid squid-3.4.6]# make && make install
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/
[root@squid squid-3.4.6]# vim /etc/squid.conf
设置防火墙
[root@squid squid-3.4.6]# iptables -F ‘清空所有规则’
[root@squid squid-3.4.6]# iptables -t nat -F ‘清除所有NAT规则’
[root@squid squid-3.4.6]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
开启服务
[root@squid squid-3.4.6]# squid -k parse ‘检查语法,没问题Ctrl+C键取消’
[root@squid squid-3.4.6]# squid -z ‘初始化缓存目录’
[root@squid squid-3.4.6]# squid ‘启动服务’
[root@squid squid-3.4.6]# netstat -ntap | grep squid ‘检测是否启动成功’
添加脚本优化服务
[root@squid init.d]# chmod +x squid ‘添加权限’
[root@squid init.d]# chkconfig --add squid ‘便于service识别’
[root@squid init.d]# service squid stop ‘关闭squid服务’
[root@squid init.d]# service squid start ‘开启squid’
Web1服务器配置
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo "<h1>this is tsst1 web </h1>" > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -anpt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 12644/httpd
[root@localhost ~]# route add -net 192.168.100.0/24 gw 192.168.253.10
[root@localhost ~]# vi /etc/hosts
[root@localhost ~]# systemctl stop firewalld
Web2服务器配置
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo "<h1>this is test2 web </h1>" > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -anpt | grep httpd
tcp6 0 0 :::80 :::* LISTEN 48595/httpd
[root@localhost ~]# route add -net 192.168.100.0/24 gh 192.168.253.10
客户机测试