文:铁乐与猫

环境

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. 基于VUE的SPA单页应用开发-加载性能篇

    1.基于异步数据的vue页面刷新 先看看基于异步数据的vue页面刷新后,都发生了啥- 如图所示: 图1 基于异步数据的vue页面刷新 网络请求图 步骤如下: step1:请求页面: step2:请求页 ...

  2. JAVA项目将 Oracle 转 MySQL 数据库转换(Hibernate 持久层)

    项目开发时用的是Oracle数据库,但为了更好的做分布式,做集群,我们要将数据库转成 MySQL! 在数据库迁移中首先要做的事是将 Oracle 的表结构以及数据 克隆到 MySQL 数据库. 这点不 ...

  3. iOS开源项目周报0330

    由OpenDigg 出品的iOS开源项目周报第十四期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. FengNi ...

  4. Bootstrap table 跨页全选

    此代码是针对于bootstrap table中分页的跨页全选. 以下是整个bootstrap的定义 <script type="text/javascript" src=&q ...

  5. js判断用户是否离开当前页面

    简介 VisibilityChange 事件:用于判断用户是否离开当前页面 Code // 页面的 visibility 属性可能返回三种状态 // prerender,visible 和 hidde ...

  6. linux下安装jdk8

    https://www.cnblogs.com/shihaiming/p/5809553.html

  7. BZOJ4636: 蒟蒻的数列(动态开节点线段树)

    题意 题目链接 Sol 直接上动态开节点线段树 因为只有一次询问,所以中途不需要下传标记 #include<bits/stdc++.h> #define LL long long usin ...

  8. 原 java调整数据顺序是奇数位于偶数的前面(思路与实现)

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 思路一: 首先这 ...

  9. PHP 抽象类实现接口注意事项(含PHP与.Net的区别)

    最近在学习Drupal8,看到源码里面一个抽象类BlockBase实现了一个接口BlockPluginInterface,但是并没有实现该接口的所有方法.然后我就不淡定了,因为之前是做.NET的,记忆 ...

  10. Jquery实现可拖动进度条demo

    html <div class="progress"> <div class="progress_bg"> <div class= ...