`
hety119
  • 浏览: 2673 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

squid介绍及其简单配置【转】

阅读更多
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://linuxme.blog.51cto.com/1850814/372960
                                                    squid介绍及其简单配置
1.Squid是什么?
  Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人
们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想
下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如
:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据
到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地
从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FT
P,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
2.squid代理的作用:


3. 接下来我们主要探讨的是squid各种代理的定义
正向代理
a.  标准的代理缓冲服务器
  一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。

 b.  透明代理缓冲服务器
  透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。

反向代理:
 a.  反向代理缓冲服务器
  反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。

4. Squid 主要组成部分
   服务名:squid
   主程序:/usr/sbin/squid
   配置目录:/etc/squid
   主配文件:/etc/squid/squid.conf
   监听tcp端口号:3128
默认访问日志文件:/var/log/squid/access.log
5.squid 常用配置选项(/etc/squid/squid.conf)
     http_port 3128 (还可以只监听一个一个ip  http_port 192.168.0.1:3128)
         cache_mem 64MB         #缓存占内存大小
         maximum_object_size 4096KB            #最大缓存块
         reply_body_max_size  1024000 allow all  #限定下载文件大小
         access_log /var/log/squid/access.log   #访问日志存放的文件
         visible_hostname  proxy.test.xom  #可见的主机名
         cache_dir ufs /var/spool/squid 100 16 256
         usf:缓存数据的存储格式
                /var/spool/squid 缓存目录
                100 : 缓存目录占磁盘空间大小(M)
                16 :缓存空间一级子目录个数
                256 :缓存空间二级子目录个数
         cache_mgr  webmaster@test.com   #定义管理员邮箱
     http_access deny all   #访问控制

6.squid中的访问控制
  使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。 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 bbs.bitsCN.com
  元素的值被匹配,则这个 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. 请记住列表中的规则总是遵循由上而下的顺序。
7. 好了介绍了那么多下面我们来对squid几种代理进行简单配置:
     标准的代理缓冲服务器的配置:
      a.squid服务器上的配置
         准备环境:软件包:squid(任意版本)
                双网卡:eth0:192.168.1.1 eth1:10.106.34.12
           如图:



         vim /etc/squid/squid.conf
                http_port 192.168.1.12:3128 (可写多个)
             cache_mem 64MB       
             maximum_object_size 4096KB          
             reply_body_max_size  1024000 allow all
             access_log /var/log/squid/access.log
             visible_hostname  proxy.test.xom
cache_mgr  webmaster@test.com      
http_access allow all
b.一切配置以后:
            squid –z 初始化缓存
                     squid –k parse 检查语法
                     service squid start 启动squid
                     chkconfig squid on 加入开机启动
                     netstat –nltp   查看3128端口是否打开
c.客服端的配置:
                     ip : 192.168.1.12 gw:192.168.1.1
          然后打开浏览器à工具à选项à连接à局域网设置à代理服务器
          地址:192.168.1.1 端口:3128
          一切搞定之后在浏览器输入http://www.google.cn即可访问,上网了easy吧!

透明代理缓冲服务器的配置:
a. aquid服务器上的配置与标准的代理缓冲服务器几乎一样     
     差别就是:http_port 192.168.1.12:3128 transparent
b.添加iptables规则:
iptables -t nat -I PREROUTING  -s 192.168.1.0/24 -p tcp -dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 53 -j SNAT -to-source 10.106.34.12
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 53 -j SNAT -to-source 10.106.34.12

squid –k parse
              service squid reload

c.客服端不需要在浏览器中指定代理服务器的地址,端口
但需设置上网的DNS
好了经过上三个步骤你就可以上网了
反向代理缓冲服务器配置
      注意:反向代理和透明代理不能同时使用
       步骤:
a.       Squid服务器的设置,修改/etc/squid/squid.conf
同样反向代理aquid服务器上的配置与标准的代理缓冲服务器几乎一样
不同之处:http_port 10.106.34.12:80 vhost
           Cache_peer 192.168.1.12 parent 80 0 originserver weight=5 max-conn=30
上一行的解释:定义web服务器 web服务器地址 服务器类型 http端口 icp端口  [可选项]

squid –k parse
                     service squid reload

b.      客服端的设置(注意:这时的客服端就是web服务器)
               开启web服务
          好了通过以上配置外网即可访问你的web服务器了
              
  


本文出自 “linuxme” 博客,请务必保留此出处http://linuxme.blog.51cto.com/1850814/372960
分享到:
评论

相关推荐

    squid 2.6 for window

    下面将详细介绍Squid 2.6在Windows环境中的应用及其关键特性。 一、Squid 2.6概述 Squid 2.6是Squid系列的一个稳定版本,发布于2005年,虽然现在已经有了更新的版本,但在许多系统中仍然广泛使用。这个版本引入了多...

    squid包含htpasswd.exe

     至此,可以保存squid.conf并且退出文本编辑器了,简单的Squid for Windows的配置已经完成。  下面我们回到命令行,输入以下命令:  c:>cd c:squidsbin  C:squidsbin>squid -i (注册Squid为Windows的...

    关于squid请求源服务器的响应中带Vary头1

    Squid 是一个广泛使用的开源代理缓存服务器,它在互联网基础设施中扮演着重要的角色,能够有效地减轻源...通过理解这一机制,管理员可以更好地优化 Squid 的配置,以满足不同用户需求,同时提高缓存效率和网络性能。

    Squid 中文权威指南(6)

    这些基本类型的ACL可以通过简单的命令行配置来创建。例如,以下配置行表示创建了一个名为`Workstations`的ACL,用于匹配源IP地址位于10.0.0.0/16子网的所有客户端: ```plaintext acl Workstations src 10.0.0.0/16 ...

    RHCE课程笔记

    8、网卡,DNS客户端及系统日志简单介绍。 RHCE课程-RH033Linux基础笔记六 11月9日、11月16日及11月22日课程 9、文件的搜索及文件的强制位冒险位,访问控制列表,文件属性的介绍。 RHCE课程-RH033Linux基础笔记七 ...

    SquidSync-UI:SquidSync 的前端 UI

    种子包含一个示例 AngularJS 应用程序,并预先配置为安装 Angular 框架和一堆开发和测试工具,以获得即时的 Web 开发满足感。 种子应用程序没有做太多事情,只是展示了如何将两个控制器和视图连接在一起。 入门 要...

    服务器的大用户量的承载方案 + ngxin 虚拟目录.docx

    它以其出色的稳定性、丰富的功能集、简单的配置方式和较低的资源消耗而著称,特别适合于高并发访问场景。以下是Nginx的安装步骤: 1. **编译参数**: - `--prefix=/usr/local/server/nginx`: 指定Nginx的安装路径。...

    Nginx 应用技术指南

    介绍Nginx提供的上传模块及其配置方法。 **16.12 Nginx SSL配置** 提供Nginx SSL配置的基本步骤,包括编译和配置两个阶段。 #### 十七、参考资料 - [Nginx官网](https://nginx.org/) - [Nginx官方文档]...

    详解:大型网站架构演变和知识体系

    - Squid的工作原理及配置技巧。 - 缓存的失效策略,例如LRU(最近最少使用)算法。 - **运维知识:** - 服务器资源监控与优化。 - 系统性能调优。 #### 架构演变的第三步:增加页面片段缓存 针对那些动态页面...

    大型网站架构海量数据处理知识体系(原淘宝架构师著).docx

    这一阶段需要理解前端缓存的工作原理,以及Squid的配置和缓存策略。 随着动态内容需求的增长,单纯依赖页面缓存不足以满足需求。于是,页面片段缓存技术,如ESI(Edge Side Includes)被引入,使得动态页面中相对...

    大型网站架构演变和知识体系.docx

    这需要掌握缓存原理、Squid配置和缓存失效策略。 **架构演变第三步:增加页面片段缓存** 为进一步优化,可以使用ESI(Edge Side Includes)等技术缓存动态页面中的静态片段,提高响应速度。这要求理解页面片段缓存...

    高性能高并发服务器架构

    - **Squid配置**: - 配置缓存大小,根据实际情况调整。 - 设置缓存失效时间,平衡缓存新鲜度与存储空间。 - **Apache配置**: - 使用mod_deflate模块压缩输出内容。 - 开启mod_expires模块控制缓存有效期。 ####...

    Linux面试题与答案

    - `find`命令可以用来搜索指定目录及其子目录下的文件。 - 例如,`find /home -name "*.txt"`可以查找`/home`目录下所有的`.txt`文件。 #### 41. 终止进程的命令是kill - `kill`命令可以向一个或多个进程发送信号,...

    grase-www-portal:Grase WWW门户(主程序包)

    GRASE Hotspot消除了将各个组件粘合在一起的所有辛苦工作,并提供了一个不错的简单界面来管理Hotspot及其用户。 随着组件的更改,项目也会更新,因此胶水会保持在一起。 安装 参见Wiki页面 grase-www-portal软件包/...

Global site tag (gtag.js) - Google Analytics