Proxy 如何验证用作反向代理的Squid是否正常工作?

Proxy 如何验证用作反向代理的Squid是否正常工作?,proxy,reverse-proxy,squid,Proxy,Reverse Proxy,Squid,我们希望降低其中一台web服务器的负载,并且正在使用配置为反向代理的squid运行一些测试 配置如下所示: http_端口80 accel defaultsite=original.server.com cache_peer original.server.com父级80 0无查询原始服务器名称=myAccel acl我们的网站dstdomain.contentpilot.net http_访问允许我们的_站点 缓存\u对等\u访问myAccel允许我们的\u站点 缓存\u对等\u访问myAcc

我们希望降低其中一台web服务器的负载,并且正在使用配置为反向代理的squid运行一些测试

配置如下所示:

http_端口80 accel defaultsite=original.server.com

cache_peer original.server.com父级80 0无查询原始服务器名称=myAccel

acl我们的网站dstdomain.contentpilot.net

http_访问允许我们的_站点

缓存\u对等\u访问myAccel允许我们的\u站点

缓存\u对等\u访问myAccel拒绝所有

目前的情况是,服务器几乎一直在返回TCP_MISS

1238022316.988     86 69.15.30.186 TCP_MISS/200 797 GET http://original.server.com/templates/site/images/topnav_givingback.gif - FIRST_UP_PARENT/myAccel -
1238022317.016     76 69.15.30.186 TCP_MISS/200 706 GET http://original.server.com/templates/site/images/topnav_diversity.gif - FIRST_UP_PARENT/myAccel -
1238022317.158     75 69.15.30.186 TCP_MISS/200 570 GET http://original.server.com/templates/site/images/topnav_careers.gif - FIRST_UP_PARENT/myAccel -
1238022317.344     75 69.15.30.186 TCP_MISS/200 2981 GET http://original.server.com/templates/site/js/home-search-personalization.js - FIRST_UP_PARENT/myAccel -
1238022317.414     85 69.15.30.186 TCP_MISS/200 400 GET http://original.server.com/templates/site/images/submenu_arrow.gif - FIRST_UP_PARENT/myAccel -
1238022317.807     75 69.15.30.186 TCP_MISS/200 2680 GET http://original.server.com/templates/site/js/homeMakeURL.js - FIRST_UP_PARENT/myAccel -
1238022318.666   1401 69.15.30.186 TCP_MISS/200 103167 GET http://original.server.com/portalresource/lookup/wosid/intelliun-2201-301/image2.jpg - FIRST_UP_PARENT/myAccel image/pjpeg
1238022319.057   1938 69.15.30.186 TCP_MISS/200 108021 GET http://original.server.com/portalresource/lookup/wosid/intelliun-2201-301/image1.jpg - FIRST_UP_PARENT/myAccel image/pjpeg
1238022319.367     83 69.15.30.186 TCP_MISS/200 870 GET http://original.server.com/templates/site/images/home_dots.gif - FIRST_UP_PARENT/myAccel -
1238022319.367     80 69.15.30.186 TCP_MISS/200 5052 GET http://original.server.com/templates/site/images/home_search.jpg - FIRST_UP_PARENT/myAccel -
1238022319.368     88 69.15.30.186 TCP_MISS/200 5144 GET http://original.server.com/templates/site/images/home_continue.jpg - FIRST_UP_PARENT/myAccel -
1238022319.368     76 69.15.30.186 TCP_MISS/200 412 GET http://original.server.com/templates/site/js/showFooterBar.js - FIRST_UP_PARENT/myAccel -
1238022319.377    100 69.15.30.186 TCP_MISS/200 399 GET http://original.server.com/templates/site/images/home_arrow.gif - FIRST_UP_PARENT/myAccel -

我们已经尝试删除所有缓存。任何想法。可能是因为我的网站每次都会标记一些不同的内容,即使自上次代理请求后内容没有更改?

源服务器(web服务器)会将哪些标题与您的内容一起发送回来?为了能够被squid缓存,我相信您通常必须在响应头中指定Last Modified或ETag。Web服务器通常会自动为静态内容执行此操作,但如果您的内容正在动态服务(即使来自静态源),则您必须确保它们存在,并处理请求头,例如如果修改了,则自,如果不匹配

另外,由于您随后提出的关于会话的问题指出了这个问题,所以在回答中是否出现了“Vary”标题?例如,“Vary:Cookie”告诉缓存内容可以根据请求中的Cookie头而变化:因此静态内容希望删除该内容。但如果存在会话,您的web服务器可能会将其添加到所有请求中,而不管所服务数据的静态/动态性质如何


根据我的经验,对HTTP头进行一些实验以了解其对缓存的影响是非常有益的:我记得发现解决方案并不总是显而易见的。

检查firefox中wireshark或firebug返回的头(后者更容易推广,但如果您最终需要,前者将提供更多低级信息)

在响应标题中查找这些项目(单击“Net”视图中的项目展开,并查看请求和响应标题):

  • 上次修改日期->如果未设置为过去的合理时间,则不会缓存它
  • Etags->如果每次请求相同的项目时都会更改,则将重新获取该项目
  • 缓存控制->来自max age=0的客户端的请求(我相信)每次都会请求页面的新副本
  • (编辑)Expires头->如果这是在过去设置的(即始终过期),则squid不会缓存它
正如araqnid所建议的那样,HTTP头会对代理认为它可以缓存的内容产生巨大的影响。如果您的后端使用apache,则测试不经过任何PHP或其他应用程序层而提供的静态文件是否可以缓存

此外,检查最大对象大小和最小对象大小的squid设置是否设置为合理值(默认值为4Mb和0kb,这应该可以),以及最大缓存项时间是否合理设置。 (有关此设置和其他设置,请参见)