squid
什么是squid
squid主要是用来做正向代理的,区别于nginx的反向代理。
编译安装squid
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-poll --enable-gnuregex
make
sudo make install
配置文件位置: /etc/squid.conf
修改配置文件
增加配置
//所属用户组 cache_effective_user sky cache_effective_group sky
visible_hostname 192.168.0.106
反注释配置
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256
修改/usr/local/squid/var目录权限
sudo chown -R sky:sky var
检查配置文件
./sbin/squid -k parse
初始化缓存目录
./sbin/squid -z
当配置的目录下有 00 01 02这类的文件夹时,初始化成功
启动
./sbin/squid
重新加载配置
/sbin/squid -k reconfigure
注意
- 在使用的过程中,遇到了一些问题;代理ftp的请求时,一直是Read Timed Out,
可以增加。 更新(20220428),实际代理的API使用HTTPTunnelConnector才可以:http_access allow all这样一个配置在acl配置的下面,就可以了
ftpClient = new FTPClient();
if (hasProxy) {
//设置代理 开始 使用的是squid正向代理
HTTPTunnelConnector type = new HTTPTunnelConnector(proxyHost, proxyPort);
ftpClient.setConnector(type);
}
- 在代理get请求传递body体这种场景时,suqid会返回411这样的错误;可以修改配置放开校验
request_entities on;参考官方文档