因此,我尝试将 Squid 设置为 HTTP 代理。此代理仅用于测试目的,并且位于内部网络上,无法从外部访问。我可以正常连接到代理,但 Squid 的每个 HTTP 请求都显示 403。为了快速而粗略地尝试连接,我添加了以下几行squid.conf
:
acl all src 0.0.0.0/0.0.0.0
http_access allow all
我每次 HTTP 请求仍然会得到 403 错误。想知道是否有人知道发生了什么?
内部网络位于 10.0.0.0/8 块上。如果需要更多信息,请告诉我。
注意:我不需要 squid 做任何特别的事情,它实际上只是充当一个简单的 HTTP 代理。
答案1
在没有看到你的整个配置的情况下,我只能猜测问题可能是什么,但这里有一些使用 squid 时有用的提示和潜在的陷阱。
ACL 是按顺序完成的,因此如果您在这两个 ACL 之前有任何“拒绝”的 ACL,我会首先检查它们。
默认情况下,squid 会将日志记录到 /usr/local/squid/var/logs/access.log,这可以为您提供有用的提示,帮助您了解为什么会出现 403 错误。您可能还想尝试添加这些行,这些行不在我的配置中,当我需要调试某些内容时,它们在过去被证明非常有用
# <Client IP> <Username> [<Local Time>] "<Request Method> <Request URL> HTTP/<Protocol Version> <Response Status Code> \
# <Sent reply size (with hdrs)> <Referer> <User Agent> <Squid Request Status>:<Squid Hierarchy Status>
logformat combined %>a %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid/squid.log squid
access_log /var/log/squid/access.log combined
前两行是描述组合日志格式的注释。确保 /var/log/squid 存在,并且 squid 实例运行时的任何用户都可以写入该文件。
如果您使用这些行,一般的 squid 错误将被重定向到 /var/log/squid/squid.log,并且客户端对 squid 的每个请求/响应都将记录在 /var/log/squid/access.log 中。如果有很多用户使用您的代理,请小心打开第二行 access_log,因为它将生成大量日志。
希望这可以帮助 :)