繁体   English   中英

修复缓存代理的 Squid 配置?

[英]Fixing Squid configuration for caching proxy?

我正在尝试设置 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”(第一次未命中,在缓存之前),因此缓存工作正常。

我已将重新路由添加到 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 数据包直接返回客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM