知行迭代
导航
首页
最近更改
随机页面
常用
分类目录
Linux命令
Mediawiki常用
电脑技巧
工具
链入页面
相关更改
特殊页面
页面信息
登录
查看“Squid”的源代码
←
Squid
页面
讨论
阅读
查看源代码
查看历史
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:[
[1]
]
您可以查看和复制此页面的源代码。
Squid是一个开源的web缓存代理[[服务器]]软件。专门设计用来缓存 Web 内容、控制访问权限、提高性能、减少带宽消耗。它是专门用于做 HTTP/HTTPS 代理,并且支持访问控制列表 (ACL),认证,日志记录等特性。 ==简介== ===时间轴=== ===安装=== 在 Ubuntu/Debian 系统上,有两个squid包,一个是支持ssl版本的版本,一个是不支持。之前安装squid,也可以直接安装squid-openssl,程序会移除squid 包,但配置文件和缓存目录通常会保留。可以通过以下命令安装: <syntaxhighlight lang="bash" > sudo apt update # 不支持ssl版本 sudo apt install squid # 支持ssl版本, sudo apt install squid-openssl </syntaxhighlight> ==快速开始== 配置一个匿名代理,该版本使用http代理,客户端到squid全部明文发送。 1.编辑squid配置文件<code>sudo vim /etc/squid/squid.conf</code> <syntaxhighlight lang="bash" > # 设置监听端口,也可以使用常用端口(如 80 或 443) http_port 22001 # 禁用客户端 IP 转发 forwarded_for off # 隐藏代理标识 via off # 伪装 HTTP 请求,不暴露自身版本信息 httpd_suppress_version_string on # 不通过系统的 DNS 查询 dns_nameservers 8.8.8.8 8.8.4.4 # 允许所有ip访问,建议设置认证(如用户名密码) acl all src 0.0.0.0/0 http_access allow all </syntaxhighlight> 2.重启Squid 服务 <syntaxhighlight lang="bash" > # 重启Squid sudo systemctl restart squid # 检查是否运行正常 sudo systemctl status squid </syntaxhighlight> 3.测试,可以使用多种方法 *1. 浏览器设置 *2. 系统代理设置 *3. 应用程序设置 curl工具示例 <syntaxhighlight lang="bash" > curl --proxy http://127.0.0.1:22001 http://httpbin.org/headers # 如果配置了认证 curl --proxy-user 用户名:密码 --proxy http://127.0.0.1:22001 https://httpbin.org/ip </syntaxhighlight> ==通信== Squid 支持的通信方式 {| class="wikitable" |- ! 协议 ! 描述 |- | HTTP | 最常用的协议,客户端通过 HTTP 协议向 Squid 发送请求,Squid 转发请求到目标服务器。 |- | HTTPS | 支持客户端与 Squid 之间的加密通信,Squid 转发 HTTPS 请求到目标服务器。可配置 SSL 证书进行加密。 |- | SSL Bump | 通过中间人方式解密 HTTPS 流量进行监控或内容过滤,通常用于透明代理或流量分析。 |- | FTP | Squid 作为 FTP 代理,客户端通过代理访问 FTP 服务器。 |- | Gopher | Squid 支持 Gopher 协议,尽管现代互联网使用较少,但 Squid 仍然提供此支持。 |- | Transparent Proxy (透明代理) | Squid 作为透明代理,客户端无需手动配置,所有流量都自动通过代理服务器转发。 |- | ICP (Internet Cache Protocol) | Squid 通过 ICP 与其他 Squid 缓存服务器通信,优化缓存性能。 |} ==HTTPS 代理== 通过 apt 在 Ubuntu 上安装的 Squid 默认版没有启用 SSL/TLS 支持(即不支持 HTTPS 代理或 SSL Bump 功能)。要启用 SSL 功能,需要重新编译 Squid 并启用 OpenSSL 支持。或者安装支持ssl的版本:<code>sudo aptinstall squid-openssl</code>。之前安装squid,也可以直接安装squid-openssl,程序会移除squid 包,但配置文件和缓存目录通常会保留。 使用<code>squid -v</code>可以看到含有<code>'--with-openssl' '--enable-ssl-crtd'</code> *1.申请证书 使用[[acme.sh]]申请Let's Encrypt的免费SSL证书示例: <syntaxhighlight lang="bash" > # 使用curl下载安装acme.sh curl https://get.acme.sh | sh # 在域名服务,新建A解析a.yourdomain.com到服务器IP # 使用dns方式,导入域名商api key export Namesilo_Key="xxx" # 签发ssl证书 .acme.sh/acme.sh --issue --dns dns_namesilo -d a.yourdomain.com --server letsencrypt --dnssleep 600 </syntaxhighlight> *2.编辑squid配置文件<code>sudo vim /etc/squid/squid.conf</code> <syntaxhighlight lang="bash" > https_port 443 cert=/path/to/fullchain.cer key=/path/to/key/a.yourdomain.com.key forwarded_for off via off httpd_suppress_version_string on dns_nameservers 8.8.8.8 8.8.4.4 # 添加用户名密码认证 # htpasswd 工具通常包含在 Apache2 工具包中。安装sudo apt install apache2-utils # 创建用户名和密码:sudo htpasswd -c /etc/squid/passwd 用户名 auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd acl authenticated proxy_auth REQUIRED http_access allow authenticated http_access deny all # 禁用日志或定期清理 access_log none </syntaxhighlight> 2.重启Squid 服务 <syntaxhighlight lang="bash" > # 重启Squid sudo systemctl restart squid # 检查是否运行正常 sudo systemctl status squid </syntaxhighlight> ==配置== ==资源== ===官网=== *Squid官网:https://www.squid-cache.org/ *Squid文档:https://www.squid-cache.org/Doc/ *Squid源代码 https://github.com/squid-cache/squid/ ===网站===
返回至“
Squid
”。