编译安装squid

1,357 阅读1分钟

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

注意

  1. 在使用的过程中,遇到了一些问题;代理ftp的请求时,一直是Read Timed Out,可以增加http_access allow all这样一个配置在acl配置的下面,就可以了。 更新(20220428),实际代理的API使用HTTPTunnelConnector才可以:
ftpClient = new FTPClient();
if (hasProxy) {
    //设置代理 开始  使用的是squid正向代理
    HTTPTunnelConnector type = new HTTPTunnelConnector(proxyHost, proxyPort);
    ftpClient.setConnector(type);
}
  1. 在代理get请求传递body体这种场景时,suqid会返回411这样的错误;可以修改配置放开校验request_entities on参考官方文档