修复Squid配置缓存代理?



我正在尝试设置Squid将充当透明的转发代理,启用缓存。我正依赖于这样的设置:https://aws.amazon.com/blogs/security/how-to-add-dns-filtering-to-your-nat-instance-with-squid/

我遇到的问题是,当我配置一切时,通过代理的测试服务器实际上并没有缓存任何东西,而如果我尝试从代理本身(使用squidclient)进行测试,它就会这样做。因此,当测试服务器访问我存储在云中的某处的图片时,squid访问日志显示"TCP_TUNNEL/200"。但是,当我尝试从代理本身与squidclient工具,我得到"TCP_MEM_HIT/200"(第一次是miss,在它被缓存之前),所以缓存工作正常。

我将重路由添加到IP表中,源和目的地检查被禁用(AWS设置),总体而言,流量正常运行。我认为我需要对配置进行一些更改,因为这部分是我必须复制大部分内容的地方,并且经验最少。我已经根据文档生成了证书,我的配置与那里的配置基本相同:

visible_hostname squid
cache_dir ufs /squid/cache 10000 16 256
# Handle HTTP requests
http_port 3128
http_port 3129 intercept
acl allowed_http_sites dstdomain .amazonaws.com
http_access allow allowed_http_sites
# Handle HTTPS requests
https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept
acl SSL_port port 443
http_access allow SSL_port
acl allowed_https_sites ssl::server_name .amazonaws.com
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
ssl_bump peek step1 all
ssl_bump peek step2 allowed_https_sites
ssl_bump splice step3 allowed_https_sites
ssl_bump terminate step3 all
http_access deny all

白名单工作,大多数其他一切也工作,所以唯一缺少的是squid不缓存测试服务器请求的东西,而只是传递它。任何想法,我需要什么配置更改,以解决这个问题?

在通过测试服务器访问代理时无法工作的原因是您正在对HTTP请求进行隧道传输。当您隧道HTTP请求时,即使用CONNECT方法(当您通过https访问图像时将自动发生),所有缓存都会被绕过。你不能缓存一个隧道请求,因为Squid看不到通过它的实际数据——它将返回的数据作为TCP数据包直接代理回客户端。

相关内容

  • 没有找到相关文章

最新更新