采用2.7最新稳定版本‍squid-2.7.STABLE9.tar.gz,没什么好说的了

 

./configure -prefix=/usr/local/squid -enable-dlmalloc -enable-xmalloc-statistics -enable-useragent-log -enable-referer-log -enable-epoll -enable-large-cache-files -disable-internal-dns -enable-linux-netfilter -enable-truncate -enable-x-accelerator-vary -enable-follow-x-forwarded-for -with-large-files -with-pthreads -enable-storeio="aufs,coss,diskd,ufs" -enable-kill-parent-hack -enable-gnuregex -enable-cache-digests -enable-delay-pools -enable-stacktraces -enable-default-err-language=Simplify_Chinese -enable-err-languages="Simplify_Chinese English" --enable-auth="basic" --enable-basic-auth-helpers="NCSA"

make && make install 

cp squid.conf squid.conf && rm -rf squid.conf

vim squid.conf 

 

  1. http_port 3128  
  2. acl local dst 61.164.41.148 127.0.0.0/8  
  3. acl request method HEAD CONNECT PUT DELETE  
  4. acl all src 0.0.0.0/0.0.0.0  
  5. acl OverConnLimit maxconn 50  
  6. visible_hostname localhost  
  7. cache_dir ufs /var/spool/squid 256 8 16  
  8. coredump_dir /var/spool/squid  
  9. #########  
  10. auth_param basic program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd  
  11. auth_param basic children 5  
  12. acl auth_user proxy_auth REQUIRED  
  13. http_access allow auth_user  
  14. http_access deny all  
  15. #########  
  16. access_log none  
  17. cache_log /var/log/squid/cache_log  
  18. cache_store_log none  
  19. pid_filename /var/run/squid.pid  
  20.  
  21.  
  22. error_directory /usr/local/squid/share/errors/Simplify_Chinese  
  23. cache_mgr yhl5555@126.com  
  24.  
  25. half_closed_clients off  
  26.  
  27. cache_effective_user nobody  
  28. cache_effective_group nobody  
  29.  
  30. positive_dns_ttl 5 minute  
  31. negative_dns_ttl 1 minute  
  32. shutdown_lifetime 5 second  
  33. connect_timeout 30 second  
  34. read_timeout 60 second  
  35. request_timeout 60 second  
  36.  
  37. cache_mem 256 MB  
  38.  

然后增加用户验证

 

 参考:http://www.squid-cache.org/Versions/v2/2.7/cfgman/auth_param.html
利用Apache携带的工具软件htpasswd在/usr/locad/squid/etc下生成密码文件,并添加相
应的用户信息。该密码文件每行包含一个用户的信息,即用户名和密码。例如,用
htpasswd生成密码文件passwd并添加用户haowenwen:
 

yum -y install httpd

htpasswd -c /usr/local/squid/etc/passwd haowenwen
password: ******

cd /usr/local/src/squid-2.7.STABLE9/helpers/basic_auth/NCSA
make
make install
cp ncsa_auth /usr/local/squid/bin/ncsa_auth

最后创建cache目录

‍# mkdir /var/log/squid
# chown nobody:nobody /var/log/squid
# mkdir /var/spool/squid
# chown nobody:nobody /var/spool/squid
# ls -lh /var/spool/
# cd /usr/local/squid/sbin
# ./squid -z
# ./squid -Nd 10

 输入‍http://192.168.64.131:3128出现

Access Denied的错误提示

 说明squid启动成功

 ‍因为指定了-d参数,所以现在squid会把所有的调试信息都输出终端。 按下键盘的ctrl+c,然后输入killall squid杀死squid,可以终止squid的进程。

  

‍重新引导Squid运行
# /usr/local/squid/sbin/squid -k shutdown
# /usr/local/squid/sbin/squid -s

 

‍把squid添加到系统启动项
编辑 vi /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s


 ‍常用squid调试命令:
--------------------------
重引导修改过的 squid.conf
/usr/local/squid/sbin/squid -k reconfigure
-------------------------
1,初始化你在 squid.conf 里配置的 cache 目录
#/usr/local/squid/sbin/squid -z
如果有错误提示,请检查你的 cache目录的权限。
2,对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。
#/usr/local/squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。
3,在前台启动squid,并输出启动过程。
#/usr/local/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,启动成功。
然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4,启动squid在后台运行。
#/usr/local/squid/sbin/squid -s
这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。
5,停止 squid
#/usr/local/squid/sbin/squid -k shutdown
这个不用解释吧。
6,重引导修改过的 squid.conf
#/usr/local/squid/sbin/squid -k reconfigure
这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。
7,把squid添加到系统启动项
编辑 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
当然,并不是每个人都喜欢这种启动方式,你可以用你最习惯的方式;或者把它安装为服务。

再来点其他的。
1,修改cache 缓存目录的权限。
#chown -R nobody:nobody /home/cache
我的cache缓存目录是 /home/cache,squid执行用户和用户组是 squid,squid。
2,修改squid 日志目录的权限
#chown -R nobody:nobody /usr/local/squid/var/logs
这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。
例如生成 access.log    cache.log   store.log
3,查看你的日志文档。
#more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。