1. 代理服务器的功能是代替网络用户去访问网络信息,并把获得的信息返回给用户,其工作步骤大致如下:

    )
    客户机向代理服务器发起访问互联网的请求

    )
    代理服务器收到请求后检查请求是否被允许,如果允许将会进行下一步处理,否则丢弃该请求。

    )
    代理服务器先查找本地缓存中是否有客户机请求的数据,如果有则直接返回给客户端,否则继续下一步。

    )
    如果没有找到数据缓存,则代替客户机在互联网上发起请求。

    )
    接到请求回应后复制一份到缓存中,然后返回给客户机。

  2. 2

    编译安装首先到官方网站下载源码包:http://www.squid-cache.org/ 

    接着就是编译的一套流程了,指定安装目录和配置文件路径和开启各选择

    #  tar  xf  squid.tar.bz2

    #  cd  squid

    #  ./configure  --prefix=/usr/local/squid  \

    --sysconfdir=/etc/squid  --enable-gnuregex \

    --disable-carp   --enable-async-io=240   \

    --with-pthreads  --enable-storeio=ufs,aufs,diskd \

    --disable-wccp  --enable-icmp  \

    --enable-kill-parent-hack  \

    --enable-cachemgr-hostname=localhost  \

    --enable-default-err-language=Simplify_Chinese  \

    --with-maxfd=65535  --enable-poll  \

    --enable-linux-netfilter  --enable-large-cache-files \

    --disable-ident-lookups  \

    --enable-default-hostsfile=/etc/hosts  --with-dl \

    --with-large-files  --enable-delay-pools \

    --enable-snmp  --disable-internal-dns \

    --enable-underscore  --enable-arp-acl  

    #  make  &&  make install

    还有一项必须注意的是关闭SElinux,当初就是卡在SElinux上好长时间,不关闭的话无法启动服务。这里先临时关闭。永久关闭可以修改配置文件:" /etc/selinux/config ",改为SELINUX=disabled,重启生效

    # setenforce 0

    软件源安装:

    # yum  install  squid

  3. 创建运行用户和组

    # groupadd  squid

    # useradd  -M  -s  /sbin/nologin  -g  squid  squid

    我们把缓存目录放在" /data/cache "中,所以要先建立目录

    # mkdir /data/cache -pv

    更改数据目录和安装目录的属组属主

    # chown squid:squid /data -R

    # chown squid:squid /usr/local/squid/ -R

  4. Squid 的配置文件是 " /etc/squid/squid.conf " ,我们先了解下各项配置的意义

    http_port  [hostname:]port              设定服务监听的IP地址和端口,IP为可选项

    cache_mem           设置需要多少物理内存做代理服务器的缓存,默认8MB。如果服务器上还有其他服务在允许,建议不超过物理内存的三分之一
    。还有一点需要注意的是数值和单位之间一定要有空格,否则你会遇到一个很纠结的问题,例如:cache_mem  512 MB , 512和MB之间一定要有空格

    minimum_object_size          设置最小接收的对象的大小,小于该值就不被保存进缓存,默认为0KB,不限制

    maximum_object_size          设置最大接收对象的大小,大于该值不被保存,默认为4096KB

    cache_dir              设置磁盘缓存的位置和大小,格式为:cache_dir  aufs  目录位置  大小(MB)  一级子目录数量  二级子目录数量
    ,例如:cache_dir  aufs  /data/cache  1024  16  256

  5. cache_effective_user             指定Squid进程和缓存使用的用户

    cache_effective_group          指定Squid进程和缓存使用的组

    dns_nameservers                   Squid所使用的DNS服务器,该选项会覆盖本地配置的DNS服务器。多个DNS服务器用空格隔开

    visible_hostname                  指定运行Squid的主机名称

    cache_mgr                             指定Squid系统管理员的邮箱地址

    access_log                             该选项定义的文件记录客户端每一次HTTP或TCP请求的日志。

    cache_store_log                    记录哪些对象被被保存进缓存和被拒绝

    cache_log                              一般日志的记录位置

    debug_options                     定义一般日志的详细程度,ALL表示全方面,1-9表示级别:debug_options   ALL,1 ,推荐默认值即可

    pid_filename                        指定保存pid文件的位置

    log_fqdn                               定义Squid记录客户端地址的方式,on 记录完整域名, off 记录IP地址,启用后会调用DNS解析,降低性能,推荐off

    acl                                         重头戏,用于定义访问控制列表,可被http_access、icp_access等选项进行引用。用法是 acl  列表名称  列表类型  -i  列表值,-i 为不区分大小写

    http_access                           定义是允许还是拒绝acl中定义的列表,用法:http_access  allow | deny  [!]aclname  ...   ,!是非的意思

  6. 接下来对配置文件稍作修改,然后把他启动起来。服务默认端口是" 3128 ",运行用户是nobody,我们设置用户为squid,缓存目录为/data/cache,物理内存缓存使用64 MB,之后执行建立缓存目录,停止后回车退出

    #  /usr/local/squid/sbin/squid  -z

    端口呢?

    #  /usr/local/squid/sbin/squid

    # netstat -anpt  |  grep squid

    yum安装的直接 service squid start 就可以启动了

    下面贴出完整配置:

    http_port 3128 transparent

    acl manager proto cache_object

    acl localhost src 127.0.0.1/32 ::1

    acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

    acl localnet src 10.0.0.0/8     # RFC1918 possible internal network

    acl localnet src 172.16.0.0/12  # RFC1918 possible internal network

    acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

    acl SSL_ports port 443

    acl Safe_ports port 80 8080     # http

    acl Safe_ports port 21          # ftp

    acl Safe_ports port 443         # https

    acl CONNECT method CONNECT

    http_access allow manager localhost

    http_access deny manager

    http_access deny !Safe_ports

    http_access deny CONNECT !SSL_ports

    http_access allow localnet

    http_access allow localhost

    http_access allow all

    cache_effective_user squid

    cache_effective_group squid

    cache_dir aufs /data/cache 1024 16 256

    cache_mem 64 MB

    hierarchy_stoplist cgi-bin ?

    coredump_dir /var/spool/squid

    refresh_pattern ^ftp:           1440    20%     10080

    refresh_pattern ^gopher:        1440    0%      1440

    refresh_pattern -i (/cgi-bin/|\?) 0     0%      0

    refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%     2880    ignore-reload

    refresh_pattern .                       0       20%     4320

    秒的时间等待断掉所有连接。也可以直接squid -k kill来直接关闭

  7. 默认是允许代理所有网络的,需要在需要代理的主机上配置代理服务器的IP和端口号,Windows下:IE浏览器 --> Internet选项 --> 连接 --> 局域网设置 --> 设置代理服务器的IP和端口。Linux下可以直接使用 curl 命令进行测试,通过状态返回值来判定。使用 -x 选项为curl设置代理, -I 查看返回值,例如:

    #  curl  -I -x  10.0.0.2:3128  www.xxxx.com  

    通过 10.0.0.2:3128 来打开某某某网址

  8. 配置透明代理:

    我们要为主机配置代理上网的话,就必须要去设置,这样很不利于控制和管理主机。比如我们限制了主机不能登QQ,不能访问某网址,或者只能访问某网址,结果这些主机都不设置代理上网,那功夫岂不是白费了。其实我们可以利用iptables和将代理服务器作为网关的方式让主机不知不觉中就使用代理上网,这就是Squid的透明代理。将主机发往网关数据包的目标地址端口转发到 3128 也就是Squid服务器的监听端口,这样就实现了主机不设置代理服务器也通过代理服务器上网

    修改配置文件:http_port  3128  transparent

    打开内核路由转发功能

    # echo 1 > /proc/sys/net/ipv4/ip_forward 

    # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128

    其中 -i 指定的网卡接口为接收其他主机数据包的网卡。

    端口的包。

  9. 接下来就研究下 acl 和 http_access 如设置访问控制,再看下 acl 的写法:

    acl     列表名称     列表类型     -i     列表值            名称自拟,-i 不区分大小写

    列表类型:

    src           源IP地址,客户端的IP地址    格式:acl  name  src  ip/netmask

    dst           目的IP地址,访问的IP地址    格式:acl  name  src  ip/netmask

    arp          客户端MAC地址                   格式:acl  name  arp  mac-addr

    srcdomain    源域名            格式:acl  name  srcdomain  .domain.com

    dstdomain   目标域名         格式:acl  name  dstdomain  .domain.com

    port             端口                格式:acl  name  port  num | num1 - num2

    proto           协议                格式:acl  name  proto  HTTP FTP ......

    method       请求类型         格式:acl  name method  GET POST ......

    maxconn     单一IP地址最大连接数       格式:acl  name  maxconn  num

    url_regex     URL匹配         格式:acl name url_regex  [-i] ^http://......

    time             时间段            格式:acl  name  time  [day] [h1:m1-h2:m2]

  10. http_access来控制acl中定义的是拒绝还是允许,!可以取非值,比如我们不允许访问 qq.com ,在配置文件中添加如下:

    acl deny_domain dstdomain .qq.com

    http_access deny deny_domain

    http_access allow !deny_domain

    秒,等所有的连接关闭才关闭服务,如果不想等可以直接killall squid 暴力杀死进程

    的错误,而baidu.com返回200 OK

  11. 然后试试只允许访问qq.com,拒绝其他所有域名

    acl deny_domain dstdomain .qq.com

    http_access deny !deny_domain

    http_access allow deny_domain

    只需把" ! " 的位置变一下就好了,或者allow和deny换一下,之后重新读取配置文件

    是不是只能访问qq了呢,baidu和taobao都无法访问了

  12. 其他的acl控制就不过多演示了,道理都相同,只是控制类型和值得不同而已。感兴趣的话可以问度娘获取更多资源,请善于借助搜索引擎哦 o(^▽^)o

    END

注意事项

Squid代理服务器安装的更多相关文章

  1. squid 代理服务器安装配置

    ubuntu16.04 安装squid代理服务器配置 本文参考 http://www.cnblogs.com/newflypig/archive/2012/09/28/2862000.html 1,删 ...

  2. squid代理服务器安装和配置

    服务器版本:centos6.5 squid版本:3.1 Squid介绍 Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可 ...

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

    安装: 下载安装包 http://pan.baidu.com/s/1mitvwpE 解压 tar -xzvf file.tar.gz 编译: 进入sbin目录  执行 ./configure --pr ...

  4. Linux实战教学笔记43:squid代理与缓存实践(二)

    第6章 squid代理模式案例 6.1 squid传统正向代理生产使用案例 6.1.1 squid传统正向代理两种方案 (1)普通代理服务器 作为代理服务器,这是SQUID的最基本功能:通过在squi ...

  5. squid代理与缓存(下)

    squid代理与缓存(下) 6. squid代理模式案例 6.1 squid传统正向代理生产使用案例 6.1.1 squid传统正向代理两种方案 (1)普通代理服务器 作为代理服务器,这是SQUID的 ...

  6. Linux下squid代理缓存服务环境部署

    代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载 ...

  7. squid代理加用户认证

    squid代理加用户认证 用authentication helpers添加身份验证 有如下几种认证方式 :=> NCSA: Uses an NCSA-style username and pa ...

  8. 在Azure DevOps Server的代理服务器安装Python环境

    Python和Azure DevOps Server Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初主要为系统运维人员编写自动化脚本,在实际应用中,Python已经在前端 ...

  9. squid代理http和https方式上网的操作记录

    需求说明:公司IDC机房有一台服务器A,只有内网环境:192.168.1.150现在需要让这台服务器能对外访问,能正常访问http和https请求(即80端口和443端口)操作思路:在IDC机房里另找 ...

随机推荐

  1. 生成二维码的js以及调用打印插件

    插件: qrcode.js 插件下载网址:http://code.ciaoca.com/javascript/qrcode/ 用法实例: <script type="text/java ...

  2. .NET Core 2.0和ASP.NET Core 2.0正式版抢先体验

    .NET Core 2.0和ASP.NET Core 2.0正式版抢先体验 .NET Standard 2.0 is final Broad platform support. .NET Standa ...

  3. 扩展Python模块系列(三)----参数解析与结果封装

    在上一节中,通过一个简单的例子介绍了C语言扩展Python内建模块的整体流程,从本节开始讲开始深入讨论一些细节问题,在细节讨论中从始至终都会涉及[引用计数]的问题.首先讨论C语言封装的Python函数 ...

  4. C#设计模式(3)-工厂方法模式

    引言 上一篇介绍了设计模式中的简单工厂模式-C#设计模式(2)-简单工厂模式,本篇将介绍工厂方法模式,在简单工厂模式下进行改造: 工厂方法模式简介 工厂方法(FactoryMethod)模式:定义一个 ...

  5. Qt5.8以上版本编译Oracle数据库的OCI驱动教程

    在前一篇的文章中我已经发过一个相似的文章,详情请点击:Qt5编译oracle驱动教程. 在那一篇文章中已经可以解决了Qt5的常用版本的Oracle数据库驱动的支持,但是在新的Qt开发工具中那种方法竟然 ...

  6. Thinkphp5 实现悲观锁

    悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依 ...

  7. location对象的使用

    Location 对象属性 属性 描述 hash 设置或返回从井号 (#) 开始的 URL(锚). host 设置或返回主机名和当前 URL 的端口号. hostname 设置或返回当前 URL 的主 ...

  8. macOS Sierra Version 10.12.6 环境下Tomcat的下载与安装以及InterlliJ IDEA 2017.2 环境下配置Tomcat 与创建Web项目

    一.Tomcat的下载与安装 1.官网(http://tomcat.apache.org/)下载Tomcat 9.0 Core:zip包: 2.解压到指定的文件夹即可安装完成: 3.测试是否安装成功 ...

  9. 关于视频编辑SDK的接入说明

    一.运行环境 Android 4.1(api 16)以上: 处理器:双核 1GHz以上CPU(目前只支持ARM CPU, X86.MIPS暂不支持):推荐四核1.2GHz以上CPU 内存:1 GB以上 ...

  10. 2016-2017 ACM-ICPC, Egyptian Collegiate Programming Contest (ECPC 16) 题解

    题目链接:http://codeforces.com/gym/101147 2017/8/27日训练赛,题目情况9/11,Rank 4/79. A. The game of Osho 题意:定义一个子 ...