一、安装
yum list squid* 查看有什么源,选择一个安装
yum -y install squid
设置开机启动:
chkconfig –level 35 squid on
二、服务器配置
squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置
http_port 3128 //设置监听的IP与端口号
cache_mem 64 MB //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),
//比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。
maximum_object_size 4 MB //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
minimum_object_size 0 KB //设置squid磁盘缓存最小文件
maximum_object_size_in_memory 4096 KB //设置squid内存缓存最大文件,超过4M的文件不保存到内存
cache_dir ufs /var/spool/squid 100 16 256 //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
logformat combined %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %<st “%{Referer}>h” “%{User-Agent}>h” %Ss:%Sh //log文件日志格式
access_log /var/log/squid/access.log combined //log文件存放路径和日志格式
cache_log /var/log/squid/cache.log //设置缓存日志
logfile_rotate 60 //log轮循 60天
cache_swap_high 95 //cache目录使用量大于95%时,开始清理旧的
cache cache_swap_low 90 //cache目录清理到90%时停止。
acl localnet src 192.168.1.0/24 //定义本地网段
http_access allow localnet //允许本地网段使用
http_access deny all //拒绝所有
visible_hostname squid.david.dev //主机名
cache_mgr mchina_tang@qq.com //管理员邮箱
三、添加密码授权
// 在 http_access deny all 上面加上如下权限配置,注意,一定要在这句上面
auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/passwd
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
Squid实现用户名密码,使用HTTPBasicAuth 的方式。 需要htpasswd工具来创建passwd文件 (使用 apt-get/yum install httpd-tools的方式安装此工具)
A. 创建用户‘proxy_username’ 的命令如下:
- htpasswd -c /etc/squid/passwd proxy_username
输入相应的密码后,生成 文件 /etc/squid/passwd
四、初始化服务
squid -z
squid -k parse 测试并初始化
出现错误 WARNING cache_mem is larger than total disk cache space
cache_mem不能超过cache_dir中的第一个数值, cache_dir ufs /data/squid_log 200 16 256
cache_mem 不能超过200
启动Squid: /etc/init.d/squid start
检查是否端口启动成功:netstat -na | grep 9680
五、https服务配置代理证书
yum install -y gcc openssl openssl-devel #依赖软件
cd /etc/squid/ 生成加密代理证书
openssl req -new > myhttps.csr
运行过程中输入密码, 并填写相关信息
openssl rsa -in privkey.pem -out myhttps.key
openssl x509 -in myhttps.csr -out myhttps.crt -req -signkey myhttps.key -days 3650
这里-days 3650,是指这个myhttps.crt的有效期是3650天
找到http_port 3128在后面增加一行:
https_port 443 accel vhost cert=/etc/squid/myhttps.crt key=/etc/squid/myhttps.key
(https proxy配置参考https://smoothnet.org/squid-v3-5-proxy-with-ssl-bump/)
tailf /var/log/squid/cache.log 查看日志
重启squid service squid restart
启动服务后,http服务可用,https代理服务不可用:
修改方式如下:
https协议使用,日志中一直报错: routines:SSL23_GET_CLIENT_HELLO:https proxy request, 查询各方资料,一直误解,最后在http://squid-web-proxy-cache.1019090.n4.nabble.com/icap-and-https-td3329449.html中发现只需要配置一个http_port, 并不需要配置https_port
配置如下:
http_port 9680 cert=/etc/squid/myhttps.crt key=/etc/squid/myhttps.key ssl-bump intercept generate-host-certificates=on version=1 options=NO_SSLv2,NO_SSLv3,SINGLE_DH_USE
以下两项配置,很多文章说需要,但是实际中没有使用到,可去掉
#ssl_bump stare all
#ssl_bump bump all
另外有人说的 sslproxy_flags DONT_VERIFY_PEER 也没用上
后来又试了只配置 http_port 9680 也能在http和https下使用,有点困惑了