搭建Squid反向代理服务器


好吧,更新个文章,有段时间没写技术博文了。今天就说说squid反向代理这个服务,当然,这是在Linux下配置完成的。说自己没偏见似乎不可能了。大概是相对喜欢Linux而已。但我从不否认Windows Server功能及性能会比Linux差。只是个人爱好哈,不多说。下面说下搭建squid反向代理多个域名,多个web站点的方法。

环境(这个很重要)

两台CentOS6.3一台RHEL6.2

网卡信息和DNS记录信息比较多,似乎有点烦,有需要的看清楚就是了。纯属个人喜好和习惯划分的。

DNS Server IP:192.168.2.10 (VMnet2)

Squid Server IP:(双网卡,一般代理都是代理Internet的访客吗,内外自己就不必麻烦了)外网(VMnet8‘NAT’模式并不要启用VMware的DHCP分配,即查看信息后手动对应更新为静态IP)192.168.8.113/24,内外(VMnet2)192.168.2.20/24

内部WEB Server IP:192.168.2.30-33/24(VMnet2)对应虚拟主机配置的名称查阅下面DNS配置:

[root@localhost named]# more 2.168.192.zone $TTL 1D @       IN SOA  @ rname.invalid. (                                         0       ; serial                                         1D      ; refresh                                         1H      ; retry                                         1W      ; expire                                         3H )    ; minimum         NS      @         MX 5    @         A       192.168.2.10         PTR     ns.zwz.com. 20      PTR     mail.zwz.com.         PTR     pop3.zwz.com.         PTR     smtp.zwz.com.         PTR     www.zwz.com.         PTR     squid.zwz.com.         PTR     www.wl.com. 30     PTR     ftp.zwz.com. 30     PTR     www1.zwz.com. 31      PTR     www2.zwz.com. 32      PTR     www3.wl.com. 33      PTR     www4.wl.com. [root@localhost named]#

上面红色字对应的DNS记录全是指向内部WEB服务器的相应站点。蓝色字是指向Squid服务器的,即外网访问的域名。这些是用CNAME方式做的,由于有两个域名,并都是同一个反向区域记录,所以这里就只more出反向解析的配置文件了。正向解析有需要的自个配置哈。

Note:事实上,www.zwz.com和www.wl.com就是申请的公网IP地址了。

从WEB服务器的配置开始吧,下面是Apache虚拟主机相关站点的配置:

NameVirtualHost 192.168.2.30:80 NameVirtualHost 192.168.2.31:80 NameVirtualHost 192.168.2.32:80 NameVirtualHost 192.168.2.33:80 <VirtualHost 192.168.2.30:80>     ServerAdmin admin@zwz.com     DocumentRoot /var/www/html/web1     ServerName www1.zwz.com     DirectoryIndex index.html index.html.var     ErrorLog logs/dummy-host.example.com-error_log     CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> <VirtualHost 192.168.2.31:80>     ServerAdmin webmaster@dummy-host.example.com     DocumentRoot /var/www/html/web2     ServerName www2.zwz.com     DirectoryIndex index.html     ErrorLog logs/dummy-host.example.com-error_log     CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> <VirtualHost 192.168.2.32:80>     ServerAdmin admin@wl.com     DocumentRoot /var/www/html/wl1     ServerName www3.wl.com     directoryindex index.html     ErrorLog logs/dummy-host.example.com-error_log     CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> <VirtualHost 192.168.2.33:80>     ServerAdmin webmaster@dummy-host.example.com     DocumentRoot /var/www/html/wl2     ServerName www4.wl.com     directoryindex index.html     ErrorLog logs/dummy-host.example.com-error_log     CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> [root@localhost html]#

有关Apache虚拟主机的配置这里不多说鸟。

最后是squid反向代理服务器的配置。其实squid的acl还是很强大哈,本人倒也没有深入学习过。但隐隐约约感觉到和微软的ISA有点点相似。结合Linux下的iptables应该也可以实现一个相对简单的局域网内的软件防火墙了。

1.安装squid软件—–本地yum吧。yum install -y squid 即可。

2.配置文件并不多,全在目录/etc/squid/下。而且这里我们都是只需要修改该目录下的squid.conf配置文件即可。话又说回来,该文档中只有squid软件的些许参数,很多都没在该文档中出现。

acl all src 0.0.0.0/0.0.0.0 http_access allow all ##Note:注意该句应该写在默认的的deny all前面哈。acl了,不解析,顺序读取嘛。 cache_log /usr/local/squid/var/logs/cache.log access_log /usr/local/squid/var/logs/access.log squid cache_dir ufs /usr/local/squid/var/cache/ 1000 16 256 coredump_dir /var/spool/squid ##不用多说吧,相关日志/缓存等目录的具体路劲。 http_port 80 accel vhost vport ## 配置 squid 为加速模式,并且都是是用虚拟主机的配置。 cache_mem 64 MB ##squid 用于缓存的内存量,由于我是用VMware完成的,而且系统一共才给了265MB,所以也就只给了64MB了。 cache_swap_low 90 cache_swap_high 95 cache_effective_user squid ##指定缓存的有效用户 cache_effective_group squid ##缓存的有效用户组 visible_hostname squid.zwz.com ## 设定 squid 的主机名 , 如无此项 squid 将无法启动,可以任意取。 cache_peer 192.168.2.30 parent 80 0 no-query originserver round-robin name=www1 cache_peer_domain www1 www.zwz.com cache_peer 192.168.2.31 parent 80 0 no-query originserver round-robin name=www2 cache_peer_domain www2 www.zwz.com ##上面四句的意思是将www.zwz.com这个站点的请求通过RR轮询方式进行请求,如果用户请求的数据本地 ##Squid服务器上有,那么就直接返回,否则向web源站点请求数据,然后再返回给用户。从这里看出虾米哦(Cdn吧,嘿!) cache_peer 192.168.2.32 parent 80 0 no-query originserver round-robin name=www3 cache_peer_domain www3 www.wl.com cache_peer 192.168.2.33 parent 80 0 no-query originserver round-robin name=www4 cache_peer_domain www4 www.wl.com ##同上四句~

上面配置可以清楚有冲突的acl然后直接添加至该文档的最后面。该配置文件安装后就有,在/etc/squid/目录下有几个是配置文档,还是几个是相对应的存档(带.default的)

好啦。至此,启动相关服务器上的相关服务进行测试呗,我是用物理机修改hosts的方法进行测试的。添加物理机hosts记录对应的squid服务器的NAT网卡IP指向www.zwz.com和www.wl.com即可。hosts文件一般在C:\Windows\System32\Drivers\etc目录下。

Note:不要使用chrom浏览器进行测试。貌似该浏览器自带有种代理请求的东东,其实也就是本软件范围内的缓存,好像还是比较顽固的,用IE或者Firefox测试都行,(我都是用隐私模式浏览滴)。好吧,上图看下:
修改hosts文件进行解析测试

第一次访问www.zwz.com

第一次访问www.zwz.com

刷新访问www.zwz.com

刷新访问www.zwz.com

第一次访问www.wl.com

第一次访问www.wl.com

刷新访问www.wl.com

刷新访问www.wl.com

配置完成,还有些想法哈,目前貌似这东东也不是很流行了捏。但应该也还是用人在使用的。下次倾向于Nginx哪~

本文固定链接: http://www.kutea.net/639.html

相关内容