我正在尝试设置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没有缓存测试服务器所请求的内容,而只是传递它。你知道我需要做哪些配置更改才能修复这个问题吗?
发布于 2021-02-10 20:26:14
当通过测试服务器访问代理时,这不起作用的原因是您正在通过隧道传输HTTP请求。当您隧道HTTP请求时,即使用CONNECT方法(当您通过https访问图像时会自动发生),所有缓存都会被绕过。您不能缓存隧道请求,因为Squid看不到通过它传递的实际数据-它会将返回的数据作为TCP数据包直接返回给客户端。
https://stackoverflow.com/questions/65883294
复制相似问题