当前位置:首页 > CN2资讯 > 正文内容

Windows下配置Squid反向代理服务器

2天前CN2资讯

 

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域名和Web站点B域名都指向222.0.0.10,squid.conf配置关键项如下:

#建立一个名称为(aclweba),服务端域名(dstdomain)为()的访问控制列表(acl) acl aclweba dstdomain acl aclwebb dstdomain #允许(allow)名称为(aclweba)的访问控制列表访问 http_access allow aclweba http_access allow aclwebb #设置80端口为Squid服务监听客户端访问的端口,加速模式(vhost),将转发主机头至后端服务器 http_port 80 vhost #建立一个名称为(weba)的缓存点,其上级(parent)为Web站点A(172.16.0.20:80),该Web站点是据服务器(originserver) cache_peer 172.16.0.20 parent 80 0 no-query originserver name=weba cache_peer 172.16.0.30 parent 80 0 no-query originserver name=webb #将缓存点(weba)限制为域名()访问,即使用才能访问Web站点A,有点IIS中主机头名的意思 cache_peer_domain weba cache_peer_domain webb #允许(allow)名称为(aclweba)的访问控制列表访问缓存点(weba) cache_peer_access weba allow aclweba cache_peer_access webb allow aclwebb #设置缓存使用内存大小 cache_mem 1024 MB #设置存储路径,存储格式(ufs),总缓存大小(10240MB),一级缓存(16MB),二级缓存(253MB) cache_dir ufs c:/squid/var/cache 10240 16 256

场景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域名指向222.0.0.10,squid.conf配置关键项如下:

#建立一个名称为(aclweba),服务端域名(dstdomain)为()的访问控制列表(acl) acl aclweba dstdomain #也可以建立允许所有人访问的访问控制列表(acl),可以建立针对诸如来源IP(src)、目的IP(dst)、目的域名(dstdomain)等的访问控制列表。 #acl aclweba src all
#允许(allow)名称为(aclweba)的访问控制列表访问 http_access allow aclweba #设置80端口为Squid服务监听客户端访问的端口,加速模式(vhost),将转发主机头至后端服务器 http_port 80 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 80 0 no-query originserver round-robin name=weba1 cache_peer 172.16.0.30 parent 80 0 no-query originserver round-robin name=weba2 #设置缓存使用内存大小 cache_mem 1024 MB #设置存储路径,存储格式(ufs),总缓存大小(10240MB),一级缓存(16MB),二级缓存(253MB) cache_dir ufs c:/squid/var/cache 10240 16 256

场景4:在场景3的基础上增加Squid服务A2(222.0.0.11, 172.16.0.11),与Squid服务A实现负载均衡(简单的可以通过DNS轮询机制),两个Squid服务配置基本一致,还需在配置中各增加Squid服务A和Squid服务A2互为邻居,并开放相关端口。

#建立一个名称为(aclweba),服务端域名(dstdomain)为()的访问控制列表(acl) acl aclweba dstdomain #也可以建立允许所有人访问的访问控制列表(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 80 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 80 0 no-query originserver round-robin name=weba1
cache_peer 172.16.0.30 parent 80 0 no-query originserver round-robin name=weba2
#设置缓存使用内存大小
cache_mem 1024 MB
#设置存储路径,存储格式(ufs),总缓存大小(10240MB),一级缓存(16MB),二级缓存(253MB) cache_dir ufs c:/squid/var/cache 10240 16 256

每次修改完配置无需重启服务,使用命令 c:\squid\sbin\squid -k reconfigure -n SquidProxy使服务生效。

要强行卸载服务可以net stop SquidProxy停止服务后sc delete SquidProxy卸载。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32881.html

    分享给朋友:

    “Windows下配置Squid反向代理服务器” 的相关文章

    深入探讨144GB显存显卡在深度学习中的应用与优势

    在谈到现代显卡时,144GB显存无疑成为了一个引人注目的热门话题。显存是显卡中极为关键的一部分,决定着我们在高性能计算、图形处理和深度学习等领域的使用体验。显存的容量直接影响到显卡在执行复杂任务时的能力,而144GB的显存容量,帮助我们突破了许多传统显存限制。 首先,显存的基本概念就像是计算机的临时...

    甲骨文云免费申请详解:轻松获取免费云服务

    甲骨文云免费申请概述 当提到云服务的时候,甲骨文云绝对是一个值得关注的选项。甲骨文云(Oracle Cloud)是一项提供强大基础设施和服务的云计算平台,尤其在数据管理、分析和应用开发方面具有突出的优势。在这个日益数字化的时代,免费试用计划让用户能够亲自体验甲骨文云的强大功能,激起了很多人的好奇和兴...

    宝塔安装全攻略:轻松管理你的服务器与网站

    宝塔面板,凭借其简单易用的特性,已经成为很多用户搭建和管理网站的首选工具。作为一款开源的服务器管理软件,宝塔面板提供了丰富的功能和灵活的操作方式,让无论是新手还是经验丰富的用户都能轻松上手。我在使用宝塔面板的过程中,深刻体会到它带来的便利和高效。 功能与特点 宝塔面板最大的一大优势在于其直观的用户界...

    阿里云香港轻量服务器:高性价比云计算解决方案

    阿里云香港轻量服务器是我在寻找云计算解决方案时发现的一个非常实用的选择。它不仅具备高性价比,还有灵活的配置和便捷的管理体验,适合各种用户需求。让我带你深入了解一下这个产品的特点和优势。 首先,香港轻量服务器的价格设置比较合理。我看到它提供多个配置供用户选择,无论是新手还是有经验的开发者都能在这里找到...

    选择合适的SSH连接工具以提升远程管理效率和安全性

    在当今的网络环境中,SSH连接工具扮演着重要角色。简单来说,SSH连接工具是一种应用程序,用于通过SSH协议安全地连接和管理远程服务器。想想看,当我们需要与服务器进行交互、执行命令或者上传文件时,这些工具就变得尤为重要。 我记得第一次使用SSH连接工具的时候,是为了管理一台远程服务器。能够通过简单的...

    全面VPN测评:如何选择最适合你的虚拟私人网络服务

    VPN测评是评估虚拟私人网络(VPN)服务质量的一种方法。对我而言,了解VPN测评极为重要,因为它能帮助我做出明智的选择,以确保在使用互联网时的隐私和安全。VPN测评通常涉及多个方面,包括用户评价、性能测试和专业评测。 每个人使用VPN的需求都不尽相同,这就需要从不同的角度来分析VPN服务的优劣。用...