- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章搭建一个大型网站架构的实验环境(Squid缓存服务器篇)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Squid是一个应用级代理,在保证客户端主机和服务器主机网络连通后,需要客户端软件做相应的设置后才能使用,比如给 Internet Explorer设置代理服务器地址、端口等。 WEB缓存功能对于一个规模较大、访问繁忙的网络来说是有必要的,IBM网站上的一篇文章,详细分析介绍了WEB缓存给上网用户带来的好处: http://www-900.ibm.com/developer ... achinga/index.shtml 下面我们就介绍一下squid的有关内容。 §§ 安装运行squid Redhat 7.3自带Squid的rpm包squid-2.4.STABLE6-1.7.2.i386.rpm,这里我们直接利用rpm来安装Squid: [root@rh73 /mnt/cdrom/RedHat/RPMS]# rpm -ivh squid-2.4.STABLE6-1.7.2.i386.rpm Preparing... ########################################### [100%] 1:squid ########################################### [100%] 安装后的Squid配置文件在/etc/squid/目录下,只需要简单的配置一下/etc/squid/squid.conf就可以让它工作起来了。 默认安装的Squid配置文件是一个两千多行的文本,实事上你用不到设置那么多。用编辑器打开该配置文件,找到http_access设置部分,把 http_access deny all 一行改成 http_access allow all 然后启动Squid: /etc/rc.d/init.d/squid start 现在你的Squid代理服务器已经可以使用了。到客户端设置上网软件的代理选项,以Internet Explorer 6.0为例,在Internet属性设置里设置“连接”属性,点“局域网设置”按钮。 在弹出的对话框中选中“为LAN使用代理服务器”,在地址栏填入代理服务器地址,这里是:192.168.100.254,端口为squid默认的3128。 确认。此时你再用Internet Explorer上网便是使用squid代理。你可以察看squid的log文件来观察到客户端主机通过squid的访问情况: [root@rh73 ~]# tail -f /var/log/squid/access.log 在这里,上面的设置只对Internet Explorer起作用。如果你按照前面的章节在Linux接入服务器上实现了NAT的功能,除了IE浏览器里访问http、ftp服务是在用squid 代理外,其它上访问Internet的操作,如收发Email,telnet,还是通过NAT完成访问。当你把浏览器的代理设置选项清除后,你又可以恢复到NAT方式访问Internet。 §§ 设置squid 前面的配置是不加限制的允许内部所有用户使用该代理上Internet,显然这不是一个很好的访问策略。我们说过,代理方式对用户权限的控制有着非常丰富的支持。下面就看看squid如何实现多样化的权限控制的。 让我们先了解一下squid.conf的几个配置选项和访问控制特性: Squid 的定制是通过设置它的配置文件 squid.conf 来实现的,squid.conf 文件通常在 /etc/squid 目录下。这个配置文件内容很多,但它的每个选项都有详尽的说明。下面是几个常用的配置参数: http_port 首先来更改一下 http_port,这个选项指定了 Squid 监听客户请求的端口,默认值是 3128。要使用代理功能,建议这个端口值和运行 Squid 的机器的 IP 地址一起使用,可以修改成下面这样: http_port 192.168.100.254:3128 上述声明表示 Squid 绑定在 IP 地址 192.168.100.254 上,端口为 3128。端口可以设置为任意值,但要确认没有其他程序会使用同样的端口。/etc/services文件列出了常用端口,如果你想为squid设置其它的端口,可以参考这个文件的内容,防止重复设置。 visible_hostname 192.168.100.254 运行squid的主机的名字,可以写上该机器的IP地址。 [email]cache_mgrpangty@usa.net[/email] 管理员的邮件地址。在访问发生错误时,visible_hostname和cache_mgr这两个选项的值显示在错误提示页面内的相关位置。 cache_mem 16 MB 定义缓存内存,一般定义为物理内存大小的1/3。默认设置为8MB。 cache_dir Type Directory-Name Fs-specific-data [options] 定义硬盘缓存空间以存储访问过的页面或其它资源的拷贝。Type是指存储类型,一般设置为ufs。Directort-Name代表缓存的位置,默认的设置是cache_dir ufs /var/spool/squid 100 16 256。其中100代表缓存空间最大为100M;16和256代表缓存目录下的一级和二级目录数。 访问控制 控制用户的访问权限等功能是使用squid的访问控制特性来实现的。Squid 访问控制有两个要素:ACL和访问列表。访问列表可以允许或拒绝某些用户对特定服务的访问。 为了使用控制功能,必须先设置 ACL。ACL 声明的格式如下: acl acl_element_name type_of_acl_element values_to_acl 下面列出一些重要的 ACL类型(type_of_acl_element) l src : 源地址(即客户机IP地址) l dst : 目标地址(即服务器IP地址) l srcdomain : 源名称 (即客户机名称) l dstdomain : 目标名称 (即服务器名称) l time : 一天中的时刻和一周内的一天 l url_regex : URL 规则表达式匹配 l urlpath_regex: URL-path 规则表达式匹配,略去协议和主机名 l proxy_auth : 通过外部程序进行用户验证 l maxconn : 单一 IP 的最大连接数 注: 1. acl_element_name 可以是任一个在 ACL 中定义的名称。 2. 任何两个 ACL 元素不能用相同的名字。 3. 每个 ACL 由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算连接;换言之,即任一 ACL的值被匹配,则这个 ACL即被匹配。 4. 并不是所有的 ACL都能使用访问列表中的全部类型。 5. 不同的 ACL写在不同行中,Squid 将把它们组合在一个列表中。 我们可以使用许多不同的访问列表。我们常用的是http_access: 允许 HTTP 访问,这个是主要的访问控制列表。 访问列表的规则由一些类似 'allow' 或 'deny' 的关键字构成,用以允许或拒绝向特定或一组 ACL 元素提供服务。 注: 1. 这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束。 2. 一个访问列表可以又多条规则组成。 3. 如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。 4. 一个访问条目中的所有元素将用逻辑与运算连接: http_access Action 声明1 AND 声明2 AND 声明 OR. http_access Action 声明3 多个 http_access 声明间用或运算连接,但每个访问条目的元素间用与运算连接。 5. 请记住列表中的规则总是遵循由上而下的顺序。 我们具体来看看如何运用acl和http_access。首先把squid.conf的配置改回原状,即修改http_access allow all为http_access deny all。下面给出几种常用访问控制: 根据IP鉴权 只有地址为192.168.100.10和192.168.100.100的终端可以使用代理 在squid.conf的ACCESS CONTROL配置部分添加 acl authorizedip src 192.168.100.10 acl authorizedip src 192.168.100.100 然后到http_access部分 在http_access deny all这一行前面添加 http_access allow authorizedip 如果需要设置的IP地址非常多,又不连续,是不是要写上一大堆的acl xxx xxx x.x.x.x?有一个简单的方法,把这些IP地址写在一个文件里,比如/etc/squid/authorizedip.txt,每行一个。然后在squid.conf里这样写 acl authorizedip src "/etc/squid/authorizedip.txt" 根据时间控制 关于时间段的设置,可以参见squid.conf中的说明,具体是S - Sunday, M - Monday, T - Tuesday, W - Wednesday, H - Thursday, F - Friday A - Saturday,如果七天都允许,也可以不写。时间格式是H1:M1-H2:M2,要求是前面的要小于后面的。 # 定义一个访问时间段:每周星期一到星期五的上午八点到下午五点,允许alloweduser用户在这个时间段内上网 acl accept_time time MTWHF8:00-17:00 http_access allow alloweduser accept_time http_access deny alloweduser 访问特定URL地址 虽然我们不希望所有的人都使用代理自由的访问Internet,但有几个网站是可以让内部终端都能访问的。在squid.conf里添加访问控制: acl alloweddomain dstdomain .linuxforum.net .linuxaid.com.cn http_access allow alloweddomain 同样的,如果参数很多的情况,也可以把这些允许的地址名写到一个文本里: acl alloweddomain dstdomain "/etc/squid/alloweddomain.txt" alloweddomain.txt里是允许访问站点的列表,每行一个。 根据关键字过滤网址 有些网站(色情网站,广告网站)很令人讨厌,通过设置acl可以很容易屏蔽掉这些站点: acl denyurl url_regex sex boylink xxx city69 asiaadult sehu http_access deny denyurl 这个设置将过滤带有sex boylink xxx city69 asiaadult sehu这些关键字的URL地址。 和前面一样,也可以把这些关键字写到一个文本里 acl denyedurl url_regex "/etc/squid/sex.txt" http_access deny denyurl 基于用户的认证 Squid本身并不支持用户验证,它是通过外部程序提供用户验证功能,用户通过squid访问前需要输入有效的用户名和密码。可以用 proxy_auth ACL 和 authenticate_program 来实现这个功能,在允许访问前强制进行用户名和密码的核查。下面列出一些 Squid 能用到的验证程序: NCSA : 使用 NCSA 风格的用户名和密码档 LDAP : 使用 Linux Lightweight 目录访问协议(Linux Lightweight Directory Access Protocol) SMB : 使用 SMB 协议的服务,如 SAMBA 或 Windows NT MSNT : 使用 Windows NT 的域验证 PAM : 使用 Linux 的可装载验证模块 getpwam : 使用 Linux 密码档 使用验证功能必须用authenticate_program 选项指定使什么验证程序,并且请确认选定的验证程序已安装并能很好的工作。默认的,这些验证程序放在/usr/lib/squid/目录下。 以NCSA认证为例,修改 squid.conf 文件选定验证程序: authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/passwd acl alloweduser proxy_auth pangty http_access allow alloweduser 其中/etc/squid/passwd是用户和密码列表,这个文件可以用apache软件包带的htpasswd来产生,它的内容可能是这样的: pangty:wCQhCeZOOF3vk pangty是用户名,“:”号后面的是该用户的密码。 注意:修改了squid.conf配置后,需要重新启动squid或者告诉squid重新装入配置文件才能起作用。这样执行: 重起squid: [root@rh73 ~]# /etc/rc.d/init.d/squid restart 不重起,只装入新的配置文件: [root@rh73 ~]# /etc/rc.d/init.d/squid reload 以上是squid的常用的配置选项,这对于一般的应用来说已经足够了,如果你需要更多的特性支持,请阅读下面的内容。 §§ 需要更多的功能 显示中文错误提示信息 默认的,squid在发生错误时显示的是英文提示信息,squid的提示信息已经被翻译成很多语言,可以很方便的让他显示中文信息: [root@rh73 ~]# cd /etc/squid/ [root@rh73 ~]# rm -f errors [root@rh73 /etc/squid]# ln -s /usr/lib/squid/errors/Simplify_Chinese/ errors /usr/lib/squid/errors下面有squid的各种语言版本的提示信息,按目录存放在不同的子目录下面。 支持基于MAC的控制以及访问带有下划线的URL 由于计算机的IP地址是随时可以更改的,所以即便你设置了ACL限制只有某些IP的计算机可以访问Internet,其它人仍然可以在该计算机关机的情况下,修改成这些允许上网的IP地址后访问Internet。另外,前面我们是使用DHCP来管理内部网络上的计算机的IP地址,每台计算机每次获得的IP地址可能是不一样的,所以,单纯的通过IP地址来控制上网权限并不适合所有的场合,而MAC地址相对是稳定的,一般网卡的MAC地址不能够更改,所以基于MAC地址的用户控制非常适合解决这两种情况带来的问题。 另外,我们访问Internet时,有时候会遇到这样的网站地址:http://www.hello_world.com,在网站的URL地址里面有下划线,这时Red Hat Linux自带的squid软件包可能会报告无法访问该网站。 这些功能需要重新编译squid源代码增加相应的编译选项来实现。下面我们就来看一下如何使用rpm重新编译软件包源代码获得必要的功能。 当文章写到这里的时候,Red Hat Linux网站发布了squid的升级软件包,我们可以从网上获得它的最新源代码rpm包: ftp://updates.redhat.com/7.2/en/ ... ABLE6-6.7.3.src.rpm 在开始编译前,有一些软件包是需要首先安装,这可能包括rpm-build、sgml-tools,前者在Red Hat Linux的光盘上可以找到,后者可以从这里下载: ftp://ftp.freesoft.cei.gov.cn/.m ... s-1.0.9-12.i386.rpm 安装squid的源代码包 [root@rh73 ~]# rpm -ivh squid-2.4.STABLE6-6.7.3.src.rpm 安装后的源代码包在/usr/src/redhat/SOURCES目录下,我们关心的是另外一个文件/usr/src/redhat/SPECS/squid.spec,这里面有squid的相关编译选项,修改该文件%configure部分如下: %configure \ --exec_prefix=/usr --bindir=/usr/sbin --libexecdir=/usr/lib/squid \ --localstatedir=/var --sysconfdir=/etc/squid \ --enable-poll --enable-snmp --enable-removal-policies="heap,lru" \ --enable-storeio="aufs,coss,diskd,ufs" \ --enable-delay-pools --enable-linux-netfilter \ --with-pthreads \ --enable-underscores \ --enable-arp-acl \ --enable-err-language=Simplify_Chinese \ --enable-auth-modules="LDAP,NCSA,PAM,SMB,MSNT" # --enable-icmp --enable-underscores是增加对下划线网址的支持,--enable-arp-acl是增加支持MAC地址方式的鉴权。 开始编译产生新的RPM包: [root@rh73 ~]# rpm -ba squid.spe 这条命令将根据squid.spec的配置重新编译生成新的rpm包。编译过程视机器性能的好坏而定,大概需要几分钟到几十分钟不等,如果没有什么错误,最后产生的新的rpm包在/usr/src/redhat/RPMS/i386/目录下:squid- 2.4.STABLE6-6.7.3.i386.rpm 安装新的rpm包: [root@rh73 ~]# rpm -Uvh /usr/src/redhat/RPMS/i386/squid-2.4.STABLE6-6.7.3.i386.rpm 注意,这里使用了-U参数,是因为我们前面已经安装过squid的一个较旧的版本,-U参数指出这个操作是对原有版本软件包的升级。现在你的squid就可以支持MAC地址鉴权和带下划线的URL地址了。 8) 配置squid.conf来支持MAC地址鉴权,在squid.conf里加入这样的内容: acl allowedmac arp00:10:DC:8F:5B:FF http_access allow allowedmac 上面只是常用的几种ACL设置的示例,关于ACL可以访问squid主页上FAQ文档的Access Controls部分获得更多的信息: http://www.squid-cache.org/Doc/FAQ/FAQ-10.html §§ 配置透明代理 透明代理是NAT和代理的完美结合,之所以称为透明,是因为在这种工作方式下你感觉不到代理的存在,和单纯使用NAT一样,对上网的客户端没有任何特殊的设置。Squid可以通过配置支持透明代理。 很多文章讲到共享上网就会讲有关透明代理(iptables + squid或ipchains + squid)的内容,我个人认为对于规模不大的网络,又没有内容过滤等功能的要求,使用squid是没有必要的,单纯的使用NAT方式就足够了,并且这样对运行NAT的服务器的要求就更加低,比如使用一台486 + 4M内存的机器,如果使用那些经过特殊定制的Linux系统,甚至连硬盘都不需要,只要一张软盘就可以了。 如果是源代码方式编译安装的squid,请在编译选项里指明--enable-linux-netfilter选项。Red Hat Linux自带的squid支持透明代理,我们可以直接修改/etc/squid/squid.conf文件,设置必要的参数: httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on 运行/etc/rc.d/init.d/squid reload使设置生效,然后修改fw.sh脚本,在最后添加这样一行: iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 这将把所有局域网用户通过Linux接入服务器访问www服务的访问请求重定向到工作在3128端口的squid处理。运行fw.sh脚本,使设置生效。就这么简单! 你可能还记得fw.sh里面的关于NAT的规则: iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 61.156.35.114 由于PREROUTING规则总在POSTROUTING规则之前应用,所以不用担心squid被NAT规则屏蔽掉。 注意:使用透明代理时,无法同时使用squid基于用户帐号的验证功能! 想了解更多关于透明代理的资料,请访问TLDP(The Linux Documentation Project)上关于透明代理的HOWTO文档: http://www.tldp.org/HOWTO/mini/TransparentProxy.html §§ 一个squid.conf的配置实例 现在给出一个支持透明代理并使用MAC地址控制用户上网权限的squid配置文件,该配置还支持特定网站(如色情网站)的过滤功能: #定义服务器地址和端口 http_port 192.168.100.254:3128 #定义服务器名字 visible_hostname 192.168.100.254 #定义管理员邮件地址 cache_mgr [email]pangty@usa.net[/email] #定义缓存内存空间和缓存目录 cache_mem 16 MB cache_dir ufs /var/spool/squid 100 16 256 #支持透明代理 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on #定义acl #sexurl.txt列出要过滤色情网站地址的关键字,每个关键字占一行,如xchina #maclist.txt列出允许上网的主机的MAC地址,每个地址占一行,如00:50:56:C0:00:08 acl all src 0.0.0.0/0.0.0.0 acl sexurl url_regex "/etc/squid/sexurl.txt" acl allowedmac arp "/etc/squid/maclist.txt" #定义访问策略 http_access deny sexurl http_access allow allowedmac http_access deny all 。
6、 squid缓存服务器的配置192.168.10.30 squid01.rd.bj # ee /etc/resolv.conf nameserver 192.168.10.40 。
网络配置好后,我们开始安装squid,先把的藏身处找到: # whereis squid30 squid30: /usr/ports/www/squid30 # cd /usr/ports/www/squid30 ===> The following configuration options are available for squid-3.0.1: SQUID_LDAP_AUTH=off "Install LDAP authentication helpers" SQUID_SASL_AUTH=off "Install SASL authentication helpers" SQUID_DELAY_POOLS=off "Enable delay pools" SQUID_SNMP=on "Enable SNMP support" SQUID_CARP=on "Enable CARP support" SQUID_SSL=off "Enable SSL support for reverse proxies" SQUID_PINGER=off "Install the icmp helper" SQUID_HTCP=on "Enable HTCP support" SQUID_VIA_DB=off "Enable forward/via database" SQUID_CACHE_DIGESTS=on "Enable cache digests" SQUID_WCCP=on "Enable Web Cache Coordination Prot. v1" SQUID_STRICT_HTTP=on "Be strictly HTTP compliant" SQUID_IDENT=on "Enable ident (RFC 931) lookups" SQUID_REFERER_LOG=on "Enable Referer-header logging" SQUID_USERAGENT_LOG=on "Enable User-Agent-header logging" SQUID_IPFW=off "Enable transparent proxying with IPFW" SQUID_PF=off "Enable transparent proxying with PF" SQUID_IPFILTER=off "Enable transp. proxying with IPFilter" SQUID_ICAP=off "Enable ICAP client functionality" SQUID_ESI=off "Enable ESI support (experimental)" SQUID_COSS=off "Enable the COSS storage scheme" SQUID_LARGEFILE=on "Support log and cache files >2GB" SQUID_DEBUG=off "Enable debugging options" ===> Use 'make config' to modify these settings # make install clean 漫长的安装过程又来了, 我该干点什么呢?看看新浪互联星空播客吧!速度挺快的,支持!!! 。
Squid 安装好了,现在开始配置她了。安装完后,在/usr/local/etc/squid下有squid的配置文件squid.conf和 squid.conf.default,这两个都是一样的,我们先删除掉squid.conf,在建个新的squid.conf,然后把我们的配置信息写 在里面,这样的话更加清晰一点,省得在原来的配置文件中改,里面内容那么多,改到后来,自己都不知道改了那些东西,糊涂了,如果对配置有什么不清楚的还是 可以参考squid.conf.default文件的。 # rm -rf squid.conf # touch squid.conf # ee squid.conf http_port 192.168.10.30:3128 vhost vport defaultsite=www.rd.bj cache_mem 64 MB cache_swap_low 90 maximum_object_size 20 MB minimum_object_size 0 KB maximum_object_size_in_memory 5 MB ipcache_size 1024 ipcache_low 90 fqdncache_size 1024 。
#acl all src 0.0.0.0/0.0.0.0 #好像squid30已经内置了 acl gsrc src 192.168.10.20 192.168.10.30 192.168.10.31 192.168.10.40 http_access allow gsrc 。
acl Manager proto cache_object acl Localhost src 127.0.0.1 http_access allow Manager Localhost 。
acl Safe_ports port 3128 80 3130 3131 http_access allow all 。
cache_mgr admin@rd.bj 。
cache_effective_user squid cache_effective_group squid tcp_recv_bufsize 65536 bytes 。
cache_peer_access 192.168.10.31 allow all cache_peer 192.168.10.40 parent 80 0 no-query originserver no-digest 。
access_log /usr/local/squid/logs/access.log cache_dir diskd /usr/local/squid/cache 256 16 256 Q1=60 Q2=50 。
error_directory /usr/local/etc/squid/errors/Simplify_Chinese 。
icp_port 3130 htcp_port 0 icp_query_timeout 2000 icp_access allow all digest_generation on icp_hit_stale on 保存退出后,我们验证一下配置文件是否正确: # rehash # squid parse OK,现在我们先根据配置文件创建缓存目录。 # squid -z 2007/12/27 12:43:55| Creating Swap Directories 2007/12/27 12:43:55| Making directories in /usr/local/squid/cache/00 2007/12/27 12:43:55| Making directories in /usr/local/squid/cache/01 2007/12/27 12:43:55| Making directories in /usr/local/squid/cache/02 2007/12/27 12:43:55| Making directories in /usr/local/squid/cache/03 2007/12/27 12:43:56| Making directories in /usr/local/squid/cache/05 2007/12/27 12:43:57| Making directories in /usr/local/squid/cache/06 2007/12/27 12:43:58| Making directories in /usr/local/squid/cache/07 2007/12/27 12:43:58| Making directories in /usr/local/squid/cache/08 2007/12/27 12:43:59| Making directories in /usr/local/squid/cache/0A 2007/12/27 12:43:59| Making directories in /usr/local/squid/cache/0C 2007/12/27 12:44:00| Making directories in /usr/local/squid/cache/0D 2007/12/27 12:44:01| Making directories in /usr/local/squid/cache/0F 。
这样就创建完成了。 在这里我补充一点,如果创建缓存目录失败的,多半是目录读写权限的问题。因为我们是ports安装的,所以系统会跟我们预先创建好squid用户和用户组。并把家目录指向/usr/local/squid。所以我们这里一般不会有问题。但是,如果大家是用下载的源码自行编译又想把缓存目录换到别的位置或是用个新硬盘存放,那改怎么办呢?我慢慢跟你道来。 首先我们格式化新硬盘 可以利用sysinstal来完成,具体操作可以参考FressBSD安装的那个章节有介绍,这里不说了。格式化好硬盘后,因为我们是用来存放缓存文件的,所以我们对该块硬盘做点小优化。 # newfs -b 8192 -f 1024 /dev/ad1s1d # tunefs -n enable /dev/ad1s1d # 启用Soft Updates,必需在硬盘没有被挂载的时候或在单用户模式下才可以应用 # mount /dev/ad1s1d /cache # ee /etc/fstab # 加载硬盘 补充小知识: 当 我们的分区主要存放大量小型文件时,我们会将block size 调小一点,如 8K 或是 4K。而在 newfs 时,我们也会指定fragment size,它的值最好是 block size 的八分之一,例如当block size 为8K 时,我们会使用newfs -b 8192 -f 1024 来格式化硬盘。如果您使用的是/stand/sysinstall 来格式化硬盘,您可以在格式化硬盘时按N来设置newfs option。 新硬盘安装好了以后,我们现在来做配置: # pw groupadd squid # pw useradd squid -s /usr/sbin/nologin -d /nonexistent -g squid # mkdir /cache/www.rd.bj #建立缓存目录 # chown -R squid:squid /cache/www.rd.bj 好了,现在只需要把squid.conf里的 改成 cache_dir diskd /cache/www.rd.bj 256 16 256 Q1=60 Q2=50 # squid -z 好了就补充到这里吧,我们继续我们的探索之旅.
现在squid的配置文件已经测试无误了,那我们还等什么,赶紧测试一下服务叻! # squid -CDNd1 2007/12/27 14:01:56| Starting Squid Cache version 3.0.STABLE1 for i386-portbld-freebsd6.3... 2007/12/27 14:01:56| Process ID 810 2007/12/27 14:01:56| DNS Socket created at 0.0.0.0, port 49839, FD 5 2007/12/27 14:01:56| Adding nameserver 192.168.10.40 from /etc/resolv.conf 2007/12/27 14:01:56| User-Agent logging is disabled. 2007/12/27 14:01:56| Referer logging is disabled. 2007/12/27 14:01:56| Unlinkd pipe opened on FD 9 2007/12/27 14:01:56| Local cache digest enabled; rebuild/rewrite every 3600/3600 sec 2007/12/27 14:01:56| Swap maxSize 262144 KB, estimated 20164 objects 2007/12/27 14:01:56| Target number of buckets: 1008 2007/12/27 14:01:56| Max Mem size: 8192 KB 2007/12/27 14:01:57| Rebuilding storage in /usr/local/squid/cache (DIRTY) 2007/12/27 14:01:57| Current Directory is /root 2007/12/27 14:01:57| Accepting accelerated HTTP connections at 192.168.10.30, port 3128, FD 11. 2007/12/27 14:01:57| Accepting ICP messages at 0.0.0.0, port 3130, FD 12. 2007/12/27 14:01:57| Configuring Sibling 192.168.10.31/3128/3131 2007/12/27 14:01:57| Configuring Parent 192.168.10.40/80/0 2007/12/27 14:02:04| Done scanning /usr/local/squid/cache swaplog (0 entries) 2007/12/27 14:02:04| Finished rebuilding storage from disk. 2007/12/27 14:02:04| 0 Invalid entries. 2007/12/27 14:02:04| 0 Objects loaded. 2007/12/27 14:02:04| 0 Objects expired. 2007/12/27 14:02:04| 0 Objects cancelled. 2007/12/27 14:02:04| 0 Duplicate URLs purged. 2007/12/27 14:02:04| 0 Swapfile clashes avoided. 2007/12/27 14:02:04| Took 6.97 seconds ( 0.00 objects/sec). 2007/12/27 14:02:04| Completed Validation Procedure 2007/12/27 14:02:04| Validated 25 Entries 2007/12/27 14:02:04| store_swap_size = 0 2007/12/27 14:02:04| storeLateRelease: released 0 objects 。
启动没有什么问题,来我们用浏览器访问一下吧! 正式启动可以使用:
OK,我们的Squid01的配置就到这里, 现在我们关闭虚拟机,然后拷贝一份squid01为squid02,用来配置另一台Squid服务器.
复制好squid02后,我们现在开始配置了, 应为squid01的大部分工作都已经做好了, 所以squid02的配置就比较方便了,只要是配置文件中IP地址和机器名的修改。 # ee /etc/rc.conf defaultrouter="192.168.10.10" hostname="squid02.rd.bj" 。
# ee /etc/hosts 192.168.10.31 squid02.rd.bj 。
# ee /usr/local/etc/squid/squid.conf 最后修改好的配置文件为: http_port 192.168.10.31:3128 vhost vport defaultsite=www.rd.bj 。
cache_swap_low 90 cache_swap_high 95 minimum_object_size 0 KB maximum_object_size_in_memory 5 MB ipcache_size 1024 ipcache_low 90 ipcache_high 95 fqdncache_size 1024 #acl all src 0.0.0.0/0.0.0.0 http_access allow gsrc 。
acl Manager proto cache_object acl Localhost src 127.0.0.1 http_access allow Manager Localhost 。
acl Safe_ports port 3128 80 3130 3131 http_access allow all 。
visible_hostname squid01.rd.bj cache_mgr admin@rd.bj cache_effective_group squid tcp_recv_bufsize 65536 bytes cache_peer 192.168.10.30 sibling 3128 3130 cache_peer 192.168.10.40 parent 80 0 no-query originserver no-digest access_log /usr/local/squid/logs/access.log cache_dir diskd /usr/local/squid/cache 256 16 256 Q1=60 Q2=50 icp_port 3131 icp_query_timeout 2000 icp_access allow all digest_generation on log_icp_queries on 。
。
最后,关于Squid,给大家推荐一本好书《 Squid中文权威指南》虽然讲的是squid2.5版本的,但是有很好的指导意义,我相信大多数人都已经看过了,在此推荐是对作者辛勤劳动的无比崇敬。好,我们即将要踏上proxy服务器之旅。最后此篇关于搭建一个大型网站架构的实验环境(Squid缓存服务器篇)的文章就讲到这里了,如果你想了解更多关于搭建一个大型网站架构的实验环境(Squid缓存服务器篇)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
是否可以简化在裸机上运行的这条链: 具有随时间变化的副本数的 StatefulSet 服务 使用 proxy-next-upstream: "error http_502 timeout invali
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我需要为应用程序制定架构。它专为销售产品而设计。 系统每天将接受大约 30-40k 的新产品。它将导致在表 product 中创建新记录。 系统应保留价格历史记录。用户应该能够看到产品 A 的价格在去
我需要一些帮助来理解 PHP 的内部工作原理。 还记得,在过去,我们曾经写过 TSR(Terminate and stay resident)例程(pre-windows 时代)吗?一旦该程序被执行,
1.Nginx 基础架构 nginx 启动后以 daemon 形式在后台运行,后台进程包含一个 master 进程和多个 worker 进程。如下图所示: master与
.NET Core:架构、特性和优势详解 在软件开发领域,保持领先地位至关重要。随着技术以指数级的速度发展,开发人员不断寻求高效、可扩展且多功能的解决方案来应对现代挑战。.NET Core 就是这样
本文深入探讨了Kubernetes(K8s)的关键方面,包括其架构、容器编排、网络与存储管理、安全与合规、高可用性、灾难恢复以及监控与日志系统。 关注【TechLeadCloud】,
我知道 CNN 的工作原理,包括每一层的用途(Dropout、Pooling 等)。但是,在为新数据集设计 CNN 时,我不知道要使用多少个 Conv-Relu-Pool 层,在最终获得输出之前我应该
在基于 REST 的架构中,资源和方法之间有什么区别。有吗? 最佳答案 资源是您的应用程序定义的东西;它们与物体非常相似。方法是 HTTP 动词之一,例如 GET、POST、PUT、DELETE。它们
我想用 oneOf仅在 xyType 的值上不同的模式属性(property)。我想要其中两个:一个是 xyType设置为 "1"第二个在哪里xyType是 任何其他值 .这可以使用 json 模式完
寻求 PHP 架构师的建议! 我对 PHP 不是很熟悉,但已经接管了一个用该语言编写的大型分析包的维护工作。该架构旨在将报告的数据读取到大型键/值数组中,这些数组通过各种解析模块传递,以提取每个模块已
这些存在吗? 多年来,我一直是大型强类型面向对象语言(Java 和 C#)的奴隶,并且是 Martin Fowler 及其同类的信徒。 Javascript,由于它的松散类型和函数性质,似乎不适合我习
我已经阅读了 Manning 的 Big Data Lambda Architecture ( http://www.manning.com/marz/BD_meap_ch01.pdf ),但仍然无法
在过去的几年里,我做了相当多的 iOS 开发,所以我非常熟悉 iOS 架构和应用程序设计(一切都是一个 ViewController,您可以将其推送、弹出或粘贴到选项卡栏中)。我最近开始探索正确的 M
我有以下应用程序,我在其中循环一些数据并显示它。 {{thing.title}} {{thing.description}}
昨天我和我的伙伴讨论了我正在开发的这个电子购物网站的架构。请注意,我为此使用 ASP.NET。他非常惊讶地发现我没有将添加到购物车的项目保留在 ArrayList 或其他通用列表中,而是使用 LINQ
我正在使用在 tridion 蓝图层次结构中处于较低位置的出版物。从蓝图中较高级别的出版物继承的一些内容和模式不适合我的出版物,并且永远不会被我的出版物使用。 我将跟进添加这些项目的内部团队,并尝试说
我目前已经在 Cassandra 中设计了一个架构,但我想知道是否有更好的方法来做事情。基本上,问题在于大多数(如果不是全部)读取都是动态的。我构建了一个分段系统作为应用程序服务,读取动态自定义查询(
我正在按照 documentation 中给出的 icingaweb UI v 2.0 布局执行在服务器上设置 icinga 的步骤。 。我成功进入设置页面,该页面要求您输入 token ,然后按照步
我必须保存来自不同社交媒体的用户的不同个人资料。例如用户可能有 1 个 Facebook 和 2 个 Twitter 个人资料。如果我保存每个配置文件它作为新文档插入不同的集合中,例如 faceboo
我是一名优秀的程序员,十分优秀!