代理的作用,我的理解就是正向代理就是在一台电脑上实现简单两个不同网段的互通。代理服务器在这一点上和路由器的功能类似,常用于×××。反向代理为了解决大的访问量拥挤在同一台或者同一处的主机上出现拥堵。ps:每次修改过配置文件别忘了重启服务。

1,环境:Red Hat 4.4.7-16.

2,安装squid。可以采用yum -y install squid。如果使用源码编译安装,必须安装的依赖包有:gcc pcre-devel zlib-devel opensll-devel。

3,1)正向代理。

    1.正向代理所需的配置,vim  /etc/squid/squid.conf文件。

    添加一行,visible_hostname www.baidu.com  后面的域名可随意填写。

    添加一行,http_access allow all.(先开启所有acl,以免出现问题,后面会解释acl)

    记住http_port 3128 .这一行的端口号。

    一行,cache_dir ufs /var/spool/squid 100 16 256 意思是:cache_dir acl名字 ,usf squid的文件类型 /var/spool/squid squid缓存的文件目录。100 100M的缓存目录大小,其中有16个一级子目录,256个二级子目录。

     2,正向代理实验的硬件环境,还需要两台电脑或者虚拟机。一台做为client,一台做为server。三台电脑ip设置规划。server和squid主机一个网卡为同一个网段。client和squid另外一个网卡同一网段。server和client相互ping不同,但都能ping同squid主机。

    3,在server里面建立一个简单的主界面。echo "123" >/var/www/html/index.html。关闭server的防火墙,防止本实验外的干扰。iptables -F ;service iptables stop。

    4,测试squid主机是否能访问server。在squid主机上输入curl http://server主机ip/ 显示123证明访问成功。

    5,client主机访问,命令:curl --proxy1.0 代理ip:3128 http://server主机ip/。(其中curl命令可查看man curl。命令输入:“/proxy1.0”就可以找到参数--proxy格式。“代理ip”指的是squid的与client主机同一网段的网卡ip地址。“3128”是代理端口号。之前在/etc/squid/squid.conf中http_port设置的,也就是之前让记住的端口号。)输入命令后显示123(之前在server主机上设置的网页主页)为成功。(必要的时候可能需要关闭squid主机的防火墙)。

3,2)正向代理

    知道反向代理是为了×××,正想代理就是,server为了让client访问不需要长距离去访问真实主机就可以得到一个和访问真实主机一样的反馈所在client本地架设的一台代理服务器。所以代理服务器需要“伪装”成真实主机的样子。

    1,修改vim /etc/squid/squid.conf文件。http_port 80 vhost。因为client访问都是使用的http 80端口。伪装就得真实。也把代理修改成80.后面的vhost是虚拟主机的意思。添加: cache_peer 真实主机ip parent 80 0 originserver.parent意思是代理主机和server主机的关系。也可以是这个代理指向另外一个代理,此处就因该填写sibling,兄弟的意思。80 指80端口 0 是指icp协议。不用所以填写0。originalserver原本的服务器。详细解释可见:/usr/share/doc/ (这个目录是大多数软件的文档目录,里面有他们的详细解释)。       suqid        解释文件也在这个目录下的/squid-3.1.23/squid.conf.doucumented

    2,访问就可以采用client直接访问代理服务器squid。curl http://代理squid ip/ 返回123,成功。    

    3,第一次访问时代理服务器会去访问server主机拿回相对应的页面。然后会把这个页面保存在前面定义的cache_dir定义的目录底下。也就是/var/spool/squid里面。当第二次访问相同的页面会直接从这里面返回对应页面而不用去直接访问主机。这样子对于主机来说就减少了相应的访问量。从而实现节省带宽的作用。

    4,如何查看client的访问是从主机获得的还是从squid获得的呢?

    4,1)client访问的时候curl有一个-I的选项。其中返回页面选项X_Cache:为MISS X_Cache_lookup:为NONE时为没有访问到该页面。都为HIT表示访问是从squid代理来的返回页面。如果是第一个为MISS但是第二个为HIT则表示是squid缓存里面没有返回页面,需先从server主机拿回页面再返回给client。

    下一章会说一下关于文件/etc/squid/squid.conf的具体配置规则以及方法。