一、配置透明代理
基本实现步骤:
1、修改squid.conf配置文件
http_port 192.168.10.1:3128 transparent
2、重新加载该配置
squid -k reconfig
3、添加iptables规则,把内部的http请求重定向到3128端口
iptables -t nat -A PREROUTING -i eth0 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
4、内部用户不需要在浏览器中设置代理,只需要设置网关
#至于内部dns指向可以把squid服务器同时做成缓存dns服务器,内部用户指向这台squid内部接口即可
二、squid反向代理
1、windows:200.168.10.2
squid-server: ifconfig eth0 200.168.10.1 ifconfig eth1 192.168.10.1
web-server: ifconfig eth0 192.168.10.2
2、修改配置文件
此时如果服务器安装apache,则
(一)可设置apache监听81端口,squid监听80端口,修改apache端口:vi /etc/httpd/httpd.conf,修改 listen:81。squid配置文件:vi /etc/squid/squid.conf
cache_peer server地址 服务器类型 http端口 icp端口 [可选项]
实验修改内容:
http_port 200.168.10.1:80 vhost
visible_hostname 200.168.10.1
acl all src all
http_access allow all
cache_peer 192.168.10.2 parent 80 0 originserver
(二)如果不更改
apache默认的80端口,squid设置其他可用端口时,例如3128,需要将80请求转发到3128,命令如下:
iptables -t nat -A PREROUTING -i eth0 -s 200.168.10.1 -p tcp --dport 80 -j REDIRECT --to 3128
#此命令必须每次开机后运行,可以写成开机执行任务脚本
实验修改内容:
http_port 200.168.10.1:3128 vhost
visible_hostname 200.168.10.1
acl all src all
http_access allow all
cache_peer 192.168.10.2 parent 80 0 originserver #Squid向 Server 192.168.10.2的端口80发送请求
3、若squid没开则开启squid否则重新加载squid配置文件 squid -k reconfig
三、查看优化速度(利用缓存)
1、将一个简单的网站上传到squid代理服务器上
2、安装rsync:yum -y install rsync
rsync:
-a --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
用rsync将它传到192.168.10.2服务器上: rsync -a -e ssh myweb/ 192.168.10.2:/usr/local/apache2/htdocs/
3、windows访问200.168.10.1
查看缓存:
/usr/local/apache2/logs/access_log
/var/spool/squid下的tree 00来查看文件数,如果有缓存,则可以通过strings 00000000x来查看
四、基于反向代理实现虚拟主机映射
1、在web-server中配置虚拟主机
vi /etc/httpd/extra/httpd-vhosts.conf (这个文件被include进httpd.conf里了)
加上这些:
2、在 /usr/local/apache2/htdocs下新建两个文件夹lamp、web,里面分别建立一个index.html文件,分别写入www.lamp.com、www.web.com
3、重启apache服务器:/usr/local/apache2/bin/apachectl restart
4、应解 200.168.10.1
www.lamp.com
200.168.10.1
www.web.com
4、在squid-server中vi /etc/squid/squid.conf
http_port 200.168.10.1:3128 vhost
visible_hostname 200.168.10.1
acl all src all
http_access allow all
cache_peer 192.168.10.2 parent 80 0 originserver name=a
cache_peer 192.168.10.2 parent 80 0 originserver name=b
cache_peer_domain a
www.lamp.com
cache_peer_domain b
www.web.com
cache_peer_access a allow all
cache_peer_access b allow all