文:铁乐与猫

环境

centos 6.5 x64

安装

最简单的一种就是yum安装。

yum install squid

版本

rpm -qa | grep squid

squid-3.1.23-16.el6_8.6.x86_64

此外就是编译安装

配置

修改squid的配置文件 /etc/squid/squid.conf

主要就是配置一下端口,缓存,日志和访问规则。

http_port 8904               #默认3128,必然得改
cache_mem 64MB #内存中的缓存大小
maximum_object_size 4MB
#最大被缓存文件大小,配合cache_dir使用,只作用于缓存到磁盘的文件。
cache_dir ufs /var/spool/squid 100 16 256
#缓存目录,默认只是在内存中进行缓存。
#这里指定缓存大小为100M,第一层子目录为16个,第二层为256。
access_log /var/log/squid/access.log #访问日志
visible_hostname squid.server
#自定义的代理服务器的主机信息,会出现在错误警告页里。

然后就是一系列的自定义的acl控制列表,就不详列了。


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.dev  //主机名
cache_mgr xx@qq.com  //管理员邮箱

初始化

在第一次启动之前或者修改了cache路径之后,需要重新初始化cache目录。

squid -z

启动

service squid start

添加用户认证

为了防止squid代理被爬虫扫到并且被用于不法用途,(比如发垃圾邮件),非常有必要为squid添加用户认证。

通过ncsa认证模块来为squid添加认证(还有其他模块,但这个模块是最常用到和大概是最简易的)

配置访问用户的账户信息。最后一个参数是用户名。这一步其实像是替linux建账户一样。

只是需要用到的htpasswd(注意,你没看错,就是htpasswd,而不叫httpasswd,逼死强迫症。)

这个工具,需要安装Apache才有(yum install httpd)。

又或者安装apache独立的工具包apache2-utils更好,

但centos上还真不好找,后来发现在centos上其实就是yum install httpd-tools。就是那些独立工具包了。

安装后默认位置在/usr/bin/htpasswd

htpasswd -c /etc/squid/passwd tiele

敲完这条命令后,会让你输入密码,然后就顺利在passwd文件里生成你的账号密码信息了。

但是后来发现太坑爹了,原来这个命令只能创建一个用户,你第二次输会将前文覆盖!!!

重要:之后添加用户,要把上面的命令去掉-c参数再运行。

-c应该就是指定配置或创建配置文件的意思,真是掉以轻心……犯了错……

所以建议正规做法还是先touch或vim创建一个passwd文件……然后直接是不加-c参数去运行。

而且我在输完十几条这样的命令后才去检查的也是失策,应该两到三个后就该cat看一下文件内容有没有才对!

另附删除用户命令

htpasswd -b -D /etc/squid/passwd usrname passwd

当然我感觉直接进/etc/squid/passwd这个文件里直接删除会更省事

然后在配置文件里加上以下命令:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth  /etc/squid/passwd
#注意,basic_ncsa_auth是在3.3版本,在3.1.23这个版本是直接ncsa_auth
#该选项指出了认证方式(basic)、需要的程序(ncsa_auth)和 对应的密码文件(password)
auth_param basic children 8 #认证程序同时跑的个数
auth_param basic realm tiele's squid server #客户端在使用代理时,输入密码时弹出来的提示框中的描述文字。
auth_param basic credentialsttl 8 hours #认证的持续时间
acl normal proxy_auth REQUIRED
#对normal这个链使用外部程序进行认证。注意,这个名称不能和其他一样。
http_access allow normal #允许normal组中的成员访问
http_access deny all #最后总是会有一条拒绝所有访问的配置。

之后重启squid

service squid restart

附:

访问控制

使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。

Squid 访问控制有两个要素:ACL 元素和访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。

下面列出一些重要的 ACL 元素类型

  * src : 源地址 (即客户机IP地址)
  * dst : 目标地址 (即服务器IP地址)
  * srcdomain : 源名称 (即客户机名称、域名)
  * dstdomain : 目标名称 (即服务器名称、域名)
  * time : 一天中的时刻和一周内的一天
  * url_regex : URL 规则表达式匹配
  * urlpath_regex: URL-path 规则表达式匹配,略去协议和主机名
  * proxy_auth : 通过外部程序进行用户验证
  * maxconn : 单一 IP 的最大连接数

为了使用控制功能,必须先设置 ACL 规则并应用。

ACL 声明的格式如下:

  acl acl_element_name type_of_acl_element values_to_acl

  注:

  1. acl_element_name 可以是任一个在 ACL 中定义的名称。
  2. 任何两个 ACL 元素不能用相同的名字。
  3. 每个 ACL 由列表值组成。
当进行匹配检测的时候,多个值由逻辑或运算连接;
换言之,即任一 ACL元素的值被匹配,则这个 ACL 元素即被匹配。
  4. 并不是所有的 ACL 元素都能使用访问列表中的全部类型。
  5. 不同的 ACL 元素写在不同行中,Squid 将把它们组合在一个列表中。
  我们可以使用许多不同的访问条目。下面列出我们将要用到的几个:
  * http_access: 允许 HTTP 访问。这个是主要的访问控制条目。
  * no_cache: 定义对缓存请求的响应。
  访问列表的规则由一些类似 'allow' 或 'deny' 的关键字构成,用以允许或拒绝向特定或一组 ACL 元素提供服务。

注:

  1. 这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束。

  2. 一个访问列表可以由多条规则组成。

  3. 如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。

  4. 一个访问条目中的所有元素将用逻辑与运算连接:

  http_access Action 声明1 AND 声明2 AND 声明 OR.

  http_access Action 声明3

  多个 http_access 声明间用或运算连接,但每个访问条目的元素间用与运算连接。

  5. 请记住列表中的规则总是遵循由上而下的顺序。

下一篇和squid有关的博文再介绍客户端上使用浏览器设置PAC文件代理配合走squid代理浏览重要站点。

适合设置权限让基本只有公司内部的成员才有权访问项目网站的后台管理。

end

Squid安装配置和使用的更多相关文章

  1. Windows Squid 安装配置

    squid 可以做反向代理将系统中相对静态的页面进行缓存和负责均衡,提高网站访问速度,增强网站可用性.安全性.用户访问Squid 反向代理服务器的 IP 地址,这样客户端的 URL 请求将被发送到反向 ...

  2. Linux squid 安装配置

    linux 代理软件 squid 查看是否安装squid   以上信息表明,本机是已经安装了此软件了 如果没有显示说明没有安装,则可以使用yum工具来安装   安装完软件后我们接着开始配置squid代 ...

  3. linux:服务器代理squid安装配置

    国内上往外的网站太慢,配了个香港代理服务器.如下:当前环境: centos系统.香港服务器IP(假设:59.188.71.11)检查squid是否安装:[root@localhost ~]# rpm ...

  4. squid安装配置

    Squid做反向代理(192.168.1.69) squid.conf http_port 80 vhost vport visible_hostname pdd2.matrixcdn.net cac ...

  5. centos5.5用phpstudy一键安装配置虚拟主机后,yum配置代理服务器squid

    最近因为工作需要,开发站点需要在lamp环境下跑网站,于是在win7上跑虚拟机装了一个centos5.5的linux 并用集成环境配置了一个lamp环境,这里用的是phpstudy的一键安装包,并配置 ...

  6. Centos7 squid安装与配置

    装squid yum install -y squid 安装httpd(用于后面生成密码文件) yum install -y httpd 或者 yum install httpd-tools -y 配 ...

  7. squid cache 服务器端的安装,配置

    一,什么squid Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率.Squid不仅支持HTTP协议, 还支持FTP.gopher.SSL和WA ...

  8. samba和squid 安装

    一. samba配置1. 什么是sambaSamba服务类似于windows上的共享功能,可以实现在Linux上共享文件,windows上访问,当然在Linux上也可以访问到.是一种在局域网上共享文件 ...

  9. 大数据应用日志采集之Scribe 安装配置指南

    大数据应用日志采集之Scribe 安装配置指南 大数据应用日志采集之Scribe 安装配置指南 1.概述 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它 ...

随机推荐

  1. C语言中的条件编译

    通常情况,我们想让程序选择性地执行,多会使用分支语句,比如if-else 或者switch-case 等.但有些时候,可能在程序的运行过程中,某个分支根本不会执行. 比如我们要写一个跨平台项目,要求项 ...

  2. NodeJS调用jar包

    我们在实际的生产.开发实践中,其实要和许多第三方服务商进行打交道,这其中包括使用他们提供的批量与联机服务,但与别的互联网企业不大相同的是,银行作为传统企业,其一贯重视安全性,许多在互联网企业看似理所当 ...

  3. IOS开发常见第三方总结

    链接](https://github.com/languages​​/Objective-C/most_watched) * [three20](https://github.com/facebook ...

  4. Spring Framework’s WebDataBinder

    Last week, I was just outside our nation’s capital teaching Spring Web MVC Framework to a wonderful ...

  5. IDEA 2019注册码

    N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iLCJhc3NpZ25lZU5hbWUiO ...

  6. IDEA 现有项目连接SVN

    前言:有时会先搭建好系统,准备好所有配置文件及公共类,然后才会从IDEA中将代码放到SVN中,这里正好讲述了如何从现有代码连接到SVN. 首先将该项目启动SVN管理 然后关联对应SVN地址 右键项目名 ...

  7. Spring学习手札(四)谈谈Spring Bean的生命周期及作用域

    在Spring中,那些组成应用程序的主体以及由Spring IoC容器所管理的对象,被称之为Bean.Bean与应用程序中其他对象(比如自己创建类)的区别就是,Bean是由IoC容器创建于销毁的.在S ...

  8. Code Signal_练习题_shapeArea

    A 1-interesting polygon is just a square with a side of length 1. An n-interesting polygon is obtain ...

  9. Code Signal_练习题_adjacentElementsProduct

    Given an array of integers, find the pair of adjacent elements that has the largest product and retu ...

  10. Yii 之components

    当我们创建一个module的时候,对应的path alias就已经创建.比如我们定义了一个module: www 1 2 3 4 5 'modules'=>array(     'www'=&g ...