Windows下配置Squid反向代理服务器
Squid是一款类Unix系统下非常流行的服务器软件,其最重要的功能就是在客户端和服务端之间建立缓存。因而Squid可以用作反向代理,部署多级缓存或者搭建CDN等,无论名称是什么,本质上都是一样的。目前Windows下也有Squid的移植版本,可以应对使用Windows环境的场景。这里是下载地址和文档,如果需要了解Squid技术细节可以看看《Squid: The Definitive Guide》这本书的翻译版本。
一、安装Squid
如果下载Binaries版本,直接解压到c:\squid。这是软件的默认安装路径,如果需要安装到其他路径下,则需要修改更多配置文件中关于路径的配置项,另外安装路径不能有空格,官方建议配置文件中对于路径的配置采用斜杠“/”代替“\”(由于类Unix系统使用“/”),即配置文件中对于路径c:\squid应该写成c:/squid。
接下来找到c:\squid\etc目录,将cachemgr.conf.default,mime.conf.default,squid.conf.default三个文件复制改为cachemgr.conf,mime.conf,squid.conf。这些是Squid配置文件,其中squid.conf则是基础,后面的工作更多的是修改这个文件。
在cmd中使用命令c:\squid\sbin\squid -i -n ServerName(当然可以将c:\squid\sbin加入系统的环境变量,以免输入那么长的命令路径)。其中“ServerName”可以自定义,如果名称中包含空格,请用使用双引号。例如:c:\squid\sbin\squid -i -n "Server Name"。在cmd中随时可以使用c:\squid\sbin\squid -h 查看关于命令参数的帮助。
对于默认的配置文件,我们先命令net start SquidProxy启动Squid看看(SquidProxy是在安装Squid服务时起的名字,在services.msc中可以查看),但是会出现一些问题,服务无法启动,这是可以通过c:\squid\sbin\squid.exe.log和c:\squid\var\cache.log日志查看出现的问题。
一般情况下是c:\squid\var\cache目录没有建立,可以手工在目录下建立;或者swap directories没有建立,可以使用命令c:\squid\sbin\squid -z建立。这时服务可以正常启动了。
二、配置Squid
接下里主要配置c:\squid\etc\squid.conf这个文件。强烈建议使用Notepad++等文本工具进行编辑(可以轻松高亮相同词汇),以便减轻查找的配置项的难度。
配置之前需要明确需求并搭建满足该需求的网络环境,下面以配置Web反向代理服务器为例讨论Squid的配置:该反向代理服务器将作为Web服务器的代理和缓存层,这里假设外网地址为222.0.0.0/24(客户端访问),内网地址为172.16.0.0/24(用于Squid服务与Web站点之间或者Squid服务之间通信,这里用Squid服务和Web站点的提法,而不是Squid服务器和Web服务器,原因是一台服务器上可能有多个Squid服务或Web站点,我们假设一台服务器上只有一个Squid服务或Web站点)。
考虑有以下几种场景:
场景1:单站点代理,Squid服务A(222.0.0.10, 172.16.0.10)为Web站点A(172.16.0.20)提供反向代理服务,这是最简单的场景,squid.conf配置关键项可以简单如下:
#建立一个名称为(all),客户端地址(src)为任意(all)的访问控制列表(acl)。
acl all src all
#允许(allow)名称为(all)的控制列表访问Squid服务
http_access allow all
#设置80端口为Squid服务监听客户端访问的端口
http_port 80
#建立一个名称为(abc)的缓存点,其上级(parent)为Web站点A(172.16.0.20:80),该Web站点是源服务器(originserver)
cache_peer 172.16.0.20 parent 80 0 no-query originserver name=abc
场景2:多站点代理,Squid服务A(222.0.0.10, 172.16.0.10)为Web站点A(172.16.0.20)和Web站点B(172.16.0.30)同时提供反向代理服务,假设Web站点A域名www.a.com和Web站点B域名www.b.com都指向222.0.0.10,squid.conf配置关键项如下:
#建立一个名称为(aclweba),服务端域名(dstdomain)为(www.a.com)的访问控制列表(acl)
acl aclweba dstdomain www.a.com
acl aclwebb dstdomain www.b.com
#允许(allow)名称为(aclweba)的访问控制列表访问
http_access allow aclweba
http_access allow aclwebb
#设置80端口为Squid服务监听客户端访问的端口,加速模式(vhost),将转发主机头至后端服务器
http_port vhost
#建立一个名称为(weba)的缓存点,其上级(parent)为Web站点A(172.16.0.20:80),该Web站点是据服务器(originserver)
cache_peer 172.16.0.20 parent no-query originserver name=weba cache_peer 172.16.0.30 parent no-query originserver name=
webb
#将缓存点(weba)限制为域名(www.a.com)访问,即使用www.a.com才能访问Web站点A,有点IIS中主机头名的意思
cache_peer_domain weba www.a.com
cache_peer_domain webb www.b.com
#允许(allow)名称为(aclweba)的访问控制列表访问缓存点(weba)
cache_peer_access weba allow aclweba cache_peer_access webb allow aclwebb #设置缓存使用内存大小 cache_mem
MB
#设置存储路径,存储格式(ufs),总缓存大小(10240MB),一级缓存(16MB),二级缓存(253MB)
cache_dir ufs c:/squid/var/cache
场景3:实现Web站点负载均衡,Squid服务A(222.0.0.10, 172.16.0.10)为部署在不同服务器上的多个Web站点A:Web站点A1(172.16.0.20)和Web站点A2(172.16.0.30)提供反向代理服务,实现负载均衡,假设Web站点A域名www.a.com指向222.0.0.10,squid.conf配置关键项如下:
#建立一个名称为(aclweba),服务端域名(dstdomain)为(www.a.com)的访问控制列表(acl)
acl aclweba dstdomain www.a.com
#也可以建立允许所有人访问的访问控制列表(acl),可以建立针对诸如来源IP(src)、目的IP(dst)、目的域名(dstdomain)等的访问控制列表。
#acl aclweba src all
#允许(allow)名称为(aclweba)的访问控制列表访问
http_access allow aclweba
#设置80端口为Squid服务监听客户端访问的端口,加速模式(vhost),将转发主机头至后端服务器
http_port vhost
#建立名称分别为(weba1、weba2)的缓存点,通过轮询(round-robin)访问其上级(parent)Web站点A1(172.16.0.20:80)或Web站点A2(172.16.0.20:80),这些Web站点是源服务器(originserver)
cache_peer 172.16.0.20 parent no-query originserver round-robin name=weba1
cache_peer 172.16.0.30 parent no-query originserver round-robin name=weba2
#设置缓存使用内存大小
cache_mem MB
#设置存储路径,存储格式(ufs),总缓存大小(10240MB),一级缓存(16MB),二级缓存(253MB)
cache_dir ufs c:/squid/var/cache
场景4:在场景3的基础上增加Squid服务A2(222.0.0.11, 172.16.0.11),与Squid服务A实现负载均衡(简单的可以通过DNS轮询机制),两个Squid服务配置基本一致,还需在配置中各增加Squid服务A和Squid服务A2互为邻居,并开放相关端口。
#建立一个名称为(aclweba),服务端域名(dstdomain)为(www.a.com)的访问控制列表(acl)
acl aclweba dstdomain www.a.com
#也可以建立允许所有人访问的访问控制列表(acl),可以建立针对诸如来源IP(src)、目的IP(dst)、目的域名(dstdomain)等的访问控制列表。
#acl aclweba src all
#建立一个名称为(localnet),来源IP为(172.16.0.0/24)的访问控制列表(acl),供内部通信
acl localnet src 172.16.0.0/24
#允许(allow)名称为(aclweba)的访问控制列表http访问
http_access allow aclweba
#允许(allow)名称为(localnet)的访问控制列表icp访问
icp_access allow localnet
#设置80端口为Squid服务监听客户端访问的端口,加速模式(vhost),将转发主机头至后端服务器
http_port vhost
#设置3130为Squid服务器将的通讯端口
icp_port 3130
#Squid服务互为邻居,通过ICP查询其他Squid服务中自己没有的缓存
cache_peer 172.16.0.10 sibling 80 3130
cache_peer 172.16.0.11 sibling 80 3130
#建立名称分别为(weba1、weba2)的缓存点,通过轮询(round-robin)访问其上级(parent)Web站点A1(172.16.0.20:80)或Web站点A2(172.16.0.20:80),这些Web站点是源服务器(originserver)
cache_peer 172.16.0.20 parent no-query originserver round-robin name=weba1
cache_peer 172.16.0.30 parent no-query originserver round-robin name=weba2
#设置缓存使用内存大小
cache_mem MB
#设置存储路径,存储格式(ufs),总缓存大小(10240MB),一级缓存(16MB),二级缓存(253MB)
cache_dir ufs c:/squid/var/cache
每次修改完配置无需重启服务,使用命令 c:\squid\sbin\squid -k reconfigure -n SquidProxy使服务生效。
要强行卸载服务可以net stop SquidProxy停止服务后sc delete SquidProxy卸载。
Windows下配置Squid反向代理服务器的更多相关文章
- windows下简单配置squid反向代理服务器
下载windwosNT版本的squid下载地址: http://squid.acmeconsulting.it/download/squid-2.6.STABLE13-bin.zip 1.把squid ...
- windows 配置squid反向代理服务器
发现Window版本的Squid 和 Linux 配置有点不一样 一.配置squid\etc目录1.squid.conf.default 拷贝一份重新命名为squid.conf2.cachemgr.c ...
- Windows下安装Nginx反向代理服务器
一,首先到 Nginx官方网站下载最新版本,下载网址: http://nginx.org/en/download.html 二,解压ZIP包,目录修改为nginx.放置在D盘根目录下,也可以放置在其它 ...
- WINDOWS 2008Server 配置nginx 反向代理服务器
本案例有用过可行 0.先要在域名官网上面配置域名对应的IP地址,然后要在自己路由器上面将80端口映射到要装nginx服务器的IP地址. 1.从官网上面下载nginx1.6.2 WINDOWS版本的 ...
- WINDOWS 2008Server 配置nginx 反向代理服务器 安装成服务
本案例有用过可行 反向代理就是是网站通过一台机器发布到公网,客户访问的时候是直接访问那台代理机器的,然后通过那台机器才访问到内网网站. 0.先要在域名官网上面配置域名对应的IP地址,然后要在自己路 ...
- 搭建Squid反向代理服务器
好吧,更新个文章,有段时间没写技术博文了.今天就说说squid反向代理这个服务,当然,这是在Linux下配置完成的.说自己没偏见似乎不可能 了.大概是相对喜欢Linux而已.但我从不否认Windows ...
- windows 下配置 Nginx 常见问题(转)
windows 下配置 Nginx 常见问题 因为最近的项目需要用到负载均衡,不用考虑,当然用大名鼎鼎的Nginx啦.至于Nginx的介绍,这里就不多说了,直接进入主题如何在Windows下配置. 我 ...
- Windows下配置Nginx
一.今天是2017年1月18日.揣着一种也许叫做冲动的心情,决定以后每天都记录和回顾新涉及的技术,巩固已学到的知识,坚持. 二.回归到今天的技术主题,因为之前对于[反向代理]这种技术充满了好奇,借此机 ...
- windows 下配置 Nginx 常见问题
因为最近的项目需要用到负载均衡,不用考虑,当然用大名鼎鼎的Nginx啦.至于Nginx的介绍,这里就不多说了,直接进入主题如何在Windows下配置. 我的系统是win7旗舰版的,到官网下载最新版本 ...
随机推荐
- 【JUC】JDK1.8源码分析之CopyOnWriteArrayList(六)
一.前言 由于Deque与Queue有很大的相似性,Deque为双端队列,队列头部和尾部都可以进行入队列和出队列的操作,所以不再介绍Deque,感兴趣的读者可以自行阅读源码,相信偶了Queue源码的分 ...
- 从零开始学习jQuery (三) 管理jQuery包装集
本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...
- 使用nodejs爬取拉勾苏州和上海的.NET职位信息
最近开始找工作,本人苏州,面了几家都没有结果很是伤心.在拉勾上按照城市苏州关键字.NET来搜索一共才80来个职位,再用薪水一过滤,基本上没几个能投了.再加上最近苏州的房价蹭蹭的长,房贷压力也是非常大, ...
- 常用html、CSS、javascript前端命名规范
无论是从技术角度还是开发视角,对于web前端开发规范文档都有一定规范,本文就css3和html5的发展前景总结了一系列的web开发文档,仅供大家参考. 规范目的: 为提高团队协作效率, 便于后台人员添 ...
- web前端--边框的特征
1.一个面试题:边框是什么形状的? 你可能认为是一个矩形的 细心地人可能说是 梯形 或者 三角形 比较合理的答案是 非矩形的 2.画三角形 将div的width height 都设置为0px bo ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】七.二次开发服务驱动
SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1 服务接口的作用 围绕着设备驱动模块采集的数据,根据需求提供多种应用服务,例如:数据上传服务.数 ...
- HTML5漂亮实用的电子书
效果体验:http://hovertree.com/texiao/html5/2.htm 点击这里下载 支持多种系统Mac,PC,Android,iPhone,iPad和Windows Phone 支 ...
- 轻松掌握:JavaScript代理模式、中介者模式
代理模式.中介者模式 代理模式 在面向对象设计中,有一个单一职责原则,指就一个类(对象.函数)而言,应该仅有一个引起它变化的原因.如果一个对象承担了过多的职责,就意味着它将变得巨大,引起它变化的原因就 ...
- windows下React-native 环境搭建
公司决定试水react-native,mac审批还没下来,没办法,先用windows硬着头皮上吧. 参考文章: React Native 中文网官方文档 史上最全Windows版本搭建安装React ...
- iOS tableView右滑显示选择
如何使用UITableViewRowAction实现右滑选择呢? 1.在iOS8以前,我们实现tableview中滑动显示删除,置顶,更多等等的按钮时,都需要自己去实现,在iOS8中系统已经写好了,只 ...