文:铁乐与猫

环境

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. Session和Cookie之间区别与联系

    一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,W ...

  2. Jupyter Notebook 快速入门[转]

    Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言.在本文中,我们将介绍 Jupyter notebook 的主要特性,以 ...

  3. oracle 合并列的函数wm_concat

    oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat( ...

  4. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  5. WIN2008服务器不能复制粘贴怎么办

    在任务管理器界面,选择进程,找到rdpclip.exe进程.   找到该进程后,点击结束进程.   然后点击WINDOWS任务管理器左上角的[文件]—[新建任务].   在编辑框内输入rdpclip. ...

  6. Java Web整合开发王者归来(JSP + Servlet + Struts + Hibernate + Spring) - 读书笔记

    第1章 状态码表示响应类型: 保留 表示请求成功地接收 完成请求客户需进一步细化请求 客户错误 服务器错误 Web服务器: Apache服务器,特长是处理静态页面,效率非常高. Tomcat提供对JS ...

  7. python Django html 模板循环条件

    views里返回数据为例: renturn render(request,'xxx.html',{'obj':123,'k1':[1,2,3,4],'k2':{'name':'yooma','age' ...

  8. 零基础学python习题 - Python必须知道的基础语法

    1. 以下变量命名不正确的是(D) A. foo = the_value B. foo = l_value C. foo = _value D. foo = value_& 2. 计算2的38 ...

  9. 177. [USACO Jan07] 有限制的素数

    177. [USACO Jan07] ★   输入文件:qprime.in   输出文件:qprime.out   简单对比 时间限制:1 s   内存限制:128 MB Farmer John 开始 ...

  10. 转:导出csv文件数字会自动变科学计数法的解决方法

    导出csv文件数字会自动变科学计数法的解决方法   其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科 ...