
如何通过Squid进行服务器http代理
简介
我们国内的服务器通常是无法访问github的,但是一些工具的脚本指向的下载地址都是github,这时候就可以用到Squid了(前提是有个国外的服务器)
安装
1. 安装 Squid
在大多数 Linux 发行版上,你可以使用包管理器来安装 Squid。以下是一些常见的安装命令:
对于 Ubuntu/Debian:
sudo apt update
sudo apt install squid
对于 CentOS/RHEL:
sudo yum install squid
2. 配置 Squid
Squid 的主配置文件通常位于 /etc/squid/squid.conf
。你可以使用文本编辑器打开它:
sudo nano /etc/squid/squid.conf
这货的注释有几千行,如果想删除这些注释可以执行
sudo sed -i '/^\s*#/d' /etc/squid/squid.conf
删除前可以备份一下
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
2.1 设置监听端口
默认情况下,Squid 会监听 3128 端口。如果你想更改端口,可以找到以下行并进行修改:
http_port 3128
2.2 设置访问控制
Squid 使用访问控制列表(ACL)来管理哪些客户端可以访问代理。你需要添加适当的 ACL 规则。
例如,允许特定 IP 地址(如 192.168.1.0/24)访问 Squid:
acl localnet src 192.168.1.0/24 # 本地网络
http_access allow localnet # 允许本地网络访问
http_access deny all # 拒绝所有其他访问
2.3 允许匿名访问(可选)
如果你希望允许匿名访问,可以在 ACL 中添加:
http_access allow all
2.4 指定IP地址访问(指定一个IP的话上面的访问控制就不用填写了)
在文件中添加 ACL 来定义允许访问的 IP 地址。例如,假设你要允许 IP 地址为 192.168.1.100
的访问,可以添加如下内容:
acl allowed_ips src 192.168.1.100
http_access allow allowed_ips
2.6 拒绝其他访问
确保在允许特定 IP 访问之后,拒绝所有其他访问。通常可以在文件的末尾添加以下行:
http_access deny all
注意:这个拒绝其他访问最好添加上
3. 启动和启用 Squid 服务
在配置完成后,启动 Squid 服务并确保它在系统启动时自动启动:
sudo systemctl start squid
sudo systemctl enable squid
4. 检查 Squid 状态
你可以检查 Squid 服务的状态,以确保它正在运行:
sudo systemctl status squid
5. 配置防火墙
确保防火墙允许 Squid 监听的端口(例如 3128)。以下是一些常见的防火墙命令:
对于 UFW(Ubuntu):
sudo ufw allow 3128/tcp
对于 firewalld(CentOS):
sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload
6. 测试 Squid 代理
在客户端机器上,可以通过配置浏览器或使用 curl
命令来测试 Squid 代理。
例如,使用 curl
测试:
curl -x http://<代理服务器IP>:3128 http://www.google.com
7. 日志和监控
Squid 会在 /var/log/squid/
目录下生成日志文件。你可以查看这些日志文件以监控访问情况:
tail -f /var/log/squid/access.log
每次修改配置文件后,记得重启 Squid 服务以应用更改:
sudo systemctl restart squid
8. 设置代理环境变量
在执行 curl
命令之前,首先需要设置代理环境变量。假设你的 Squid 代理服务器地址是 proxy_address
,端口是 proxy_port
,可以使用以下命令:(注意下面的步骤都是在你不能访问外网的机器上执行的)
export http_proxy=http://proxy_address:proxy_port
export https_proxy=http://proxy_address:proxy_port
9. 执行脚本
在设置了代理环境变量后,你就可以访问github进行下载了
curl -L https://raw.githubusercontent.com/nezhahq/scripts/main/agent/install.sh
10. 清理环境变量(可选)
执行完毕后,如果不再需要代理,可以清除环境变量:
unset http_proxy
unset https_proxy