封尘网

让学习成为一种习惯!

Redhat6.5下Squid代理服务器的安装与配置(三种模式)

squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。

系统环境:
VMware:11.0.0 build-2305329
采用的是NAT网络模式;
Squid和Web服务器:使用redhat 2.6.32-431.el6.x86_64系统 最小化安装+开发库
客户端:Win_XP

服务器已经作如下设置:

SElinux =desibled
service iptables stop

IP地址划分:

一、 配置Web 服务器
A. 安装Apache:(挂载系统光盘以rpm按顺序安装即可)

mount /dev/cdrom /mnt
rpm -ivh /mnt/Packages/apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm
rpm -ivh /mnt/Packages/httpd-tools-2.2.15-29.el6_4.x86_64.rpm
rpm -ivh /mnt/Packages/httpd-2.2.15-29.el6_4.x86_64.rpm

B. 启动Apache并加入开机启动

/etc/init.d/httpd start
chkconfig httpd on
C. 创建index.html
echo "<h1>Squid-Web/10.0.10.10</h1>" > /var/www/html/index.html

二、Squid服务器的安装:
挂载Redhat6.5系统光盘,利用RPM安装Squid软件;

mount /dev/cdrom /mnt
rpm -ivh /mnt/Packages/perl-DBI-1.609-4.el6.x86_64.rpm
rpm -ivh /mnt/Packages/squid-3.1.10-19.el6_4.x86_64.rpm

安装完检查是否成功:

[root@redhat ~]# rpm -qa|grep squid
squid-3.1.10-19.el6_4.x86_64

接下来修改配置文件:/etc/squid/squid.conf 养成良好习惯,修改前备份一下配置文件;

[root@redhat ~]# cp /etc/squid/squid.conf /etc/squid/squid.conf.$(date +%F)
[root@redhat ~]# ls /etc/squid/squid.*
/etc/squid/squid.conf  /etc/squid/squid.conf.2015-11-06  /etc/squid/squid.conf.default

其实默认系统已经有一个备份文件了:/etc/squid/squid.conf.default

上面已经完成了Squid的安装了;

三、普通代理服务

即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。

3.1 Squid服务器IP地址确认:eth0为内网IP,eth1为外网IP:

3.2 编辑squid 主配置文件/etc/squid/squid.conf
我直接清空原有数据,只填入下面的数据:

http_port 3128
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
acl lnet src 192.168.40.0/24
http_access allow lnet
http_access deny all
visible_hostname squid.david.dev
cache_mgr hz328@qq.com

3.3 启动Squid

/etc/init.d/squid start

检查是否启动成功:

[root@redhat ~]# ps -ef|grep squid
root       1195      1  0 15:12 ?        00:00:00 squid -f /etc/squid/squid.conf
squid      1198   1195  0 15:12 ?        00:00:00 (squid) -f /etc/squid/squid.conf
squid      1199   1198  0 15:12 ?        00:00:00 (unlinkd)
root       1202   1053  0 15:12 pts/0    00:00:00 grep squid

3.4 配置客户端代理IP地址和端口:

3.5 测试,可以看到是可以成功打开网页的;

到此上面已经完成普通代理的配置;

四、透明代理服务

适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。
实验拓扑图如下:

4.1 修改squid 主配置文件/etc/squid/squid.conf

http_port 3128 transparent
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
acl localnet src 192.168.40.0/24
http_access allow localnet
http_access deny all
visible_hostname squid.david.dev
cache_hz328@qq.com

注意:在http_port 3128 后添加transparent 关键字。这是透明代理和普通代理的区别;

4.2 让上面的修改的配置生效。

可以使用:/etc/init.d/squid reload
或者:squid -k reconfig

4.3启动防火墙加iptables规则,把内部的http请求重定向到3128端口

service iptables start

清除现有iptables filter 表规则
iptables -F

查看nat 表设置(已经是空的)
iptables -t nat -L -n

4.4 添加规则:
在nat表中新增一条规则

iptables -t nat -I PREROUTING -i eth0 -s 192.168.40.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

4.5 设置iptables 开机启动

chkconfig iptables on

4.6 修改客户端IP地址
将默认网关设置为squid 服务器的内网ip地址。

这里特别注意:在浏览器中,取消代理设置:


4.7 测试,同样成功打开网页;

到此,上面已经完成了透明代理的简单配置了;

五、反向代理服务
反向代理服能够为Internet用户访问企业Web站点提供缓存加速。

本次基于Apache的虚拟主机反向代理;

5.1 关闭防火墙

/etc/init.d/iptables stop

5.2 修改Apache Server 添加两个虚拟主机;

在根目录添加两个目录:

[root@redhat ~]# mkdir /nginx.58jb.com
[root@redhat ~]# mkdir /www.testweb.com

添加主页文件:

nginx.58jb.com:
echo "<h1>Squid-Web/nginx.58jb.com</h1>" >/nginx.58jb.com/index.html
www.testweb.com:
echo "<h1>Squid-Web/www.testweb.com</h1>" >/www.testweb.com/index.html

5.3 修改Apache配置文件,支持虚拟主机;

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%F)
vi /etc/httpd/conf/httpd.conf

作如下修改:

990行:
#NameVirtualHost *:80
去掉“#”号修改为:
NameVirtualHost *:80

在最后添加两个虚拟主机的配置:

<VirtualHost *:80>
    DocumentRoot /nginx.58jb.com
    ServerName nginx.58jb.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www.testweb.com
    ServerName www.testweb.com
</VirtualHost>

由于我的网站目录建立在根目录,所以要把权限开放:302行左右:

    302 <Directory />
    303     Options FollowSymLinks
    304     AllowOverride None
    305 </Directory>

修改为:

    302 <Directory />
    303     Options FollowSymLinks
    304     AllowOverride None
    305     order deny,allow
    306     allow from all
    307 </Directory>

5.4 重启Apache服务:
service httpd restart

然后回到Squid服务器:
5.7 修改squid 主配置文件/etc/squid/squid.conf

http_port 80 accel vhost
http_access allow all
cache_peer 10.0.10.10 parent 80 0 originserver name=a
cache_peer 10.0.10.10 parent 80 0 originserver name=b
cache_peer_domain a nginx.58jb.com
cache_peer_domain b www.testweb.com
cache_peer_access a allow all
cache_peer_access b allow all

visible_hostname squid.david.dev

注意:vhost 这个代理虚拟主机;

5.8 配置客户端

这里我们为了方便,就在hosts 文件里直接指定。
修改C:\Windows\System32\drivers\etc\hosts 文件

然后可以把上面透明代理加入的默认网关去掉:

5.9 测试后成功打开网页;

到此Squid服务三种代理模式已经成功测试;
当然这里也可以使用多台Web服务器,通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡;

提醒:本文最后更新于 1380 天前,文中所描述的信息可能已发生改变,请谨慎使用。