我正在尝试设置一个不缓存任何内容的本地 Squid 代理。我正在使用基于此图像的 Dockerised squid: https://hub.docker.com/r/ubuntu/squid
我像这样运行图像:
docker run -d --name squid-container -v /host/squid.conf:/etc/squid/squid.conf -e TZ=UTC -p 3128:3128 ubuntu/squid:4.13-21.10_edge
我现在正在通过带有 Axios 的 Node 应用程序对其进行测试,如下所示:
const res = await axios.get('https://www.google.com', {
proxy: {
host: 'localhost',
port: 3128
}
});
console.log(res.data);
它不起作用。对于 Google 示例,它以 HTTP 502 响应,在 Squid 日志中我可以看到:
1646472971.202 183 172.17.0.1 TCP_MISS/502 3904 GET https://www.google.com/ - HIER_DIRECT/216.58.209.196 text/html
但对于某些请求,它确实有效。例如,https://ipfs.io/ipfs/QmTWMcWKgv2a5GjH6GoUjJXChZ55HAE3tVEXvPzpdbMnFU/102
工作正常。
我的 Squid 配置(其中的一些内容是从研究这个问题中得到的,但它们都无济于事。缓存被故意关闭了)
cache deny all
dns_v4_first on
forwarded_for off
via off
http_access allow all
acl all src all
我从 Axios 收到错误 HTML 页面是:
The following error was encountered while trying to retrieve the URL: https://www.google.com/
Read Error
The system returned: [No Error]
An error condition occurred while reading data from the network. Please retry your request.
Your cache administrator is webmaster.
不使用代理,所有 axios 请求都可以正常工作。有人知道为什么有些请求可以工作,而有些则不行吗?
答案1
这似乎是 Axios 问题,而不是 Squid 配置问题。curl --proxy ...
一切运行正常。找到了这张票:
https://github.com/axios/axios/issues/658
由于我并不依赖 Axios,因此我将使用其他库。希望这能对某些人有所帮助,因为我在这上面花了太多时间。