设为首页 收藏本站
查看: 784|回复: 0

[经验分享] Squid编译安装配置

[复制链接]
发表于 2018-12-26 09:23:49 | 显示全部楼层 |阅读模式
  一、squid简介

         Squid作为网页服务器的前置cache服务器,可以代理用户向web服务器请求数据并进行缓存,也可以用在局域网中,使局域网用户通过代理上网。
        Squid是一个缓存internet数据的软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
  
        对于Web用户来说,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率。Squid不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
        Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。
       Squid由一个主要的服务程序Squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出指定数目的dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。
       Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL)。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。
  

  二、规划
  
  Squid服务器:
        eth0:192.168.10.135
        eth1:10.10.10.10
  Web服务器1:192.168.10.132
  Web服务器2:192.168.10.133
  客户端主机:10.10.10.111
  注:已关闭SELinux和firewalld。
  

  三、安装相关依赖并编译squid
  ①下载安装相关依赖
# yum -y install perl perl-Digest perl-Digest-MD5 libecap libtool-ltdl-devel
perl-Compress* perl-DBI  gcc gcc-c++ net-snmp net-snmp-utils
# wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.12.tar.gz
# groupadd -g 23 squid                     ##创建群组
# useradd -s /sbin/nologin -g squid -u 23 squid -d /var/spool/squid  

  ②编译squid
# tar -zxvf squid-3.5.12.tar.gz
# cd squid-3.5.12
# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-gnuregex --enable-icmp --enable-snmp --enable-default-err-language="Simplify_Chinese" --enable-kill-parent-hack --enable-cache-digests --enable-underscore --enable-poll --enable-async-io=240 --enable-arp-acl --enable-delay-pools --enable-follow-x-forwarded-for --with-large-files --with-default-user=squid
# make
# make install  编译项简单释义:
--prefix=/usr/local/squid:指定软件安装位置
--sysconfdir=/etc:指定配置文件安装路径
--enable-gnuregex:支持GNU正则表达式
--enable-icmp:支持icmp
--enable-snmp:支持snmp,此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测
--enable-default-err-language="Simplify_Chinese" :指定出错时显示的错误页面为简体中文
--enable-kill-parent-hack:关闭squid时,连同其父进程一起关闭
--enable-cache-digests:加快请求时,检索缓存内容速度
--enable-underscore:允许解析的URL中出现下划线(squid默认带下划线的URL非法并拒绝访问)
--enable-poll:指定使用poll()函数
--enable-async-io=240:异步I/O,用以提升存储性能
--enable-arp-acl:可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗
--enable-delay-pools:开启squid延时池功能。延时池是squid用于传输形状或带宽限制的技术。
该池由大量的客户端IP地址组成。当来自这些客户端的请求处于cache丢失状态,他们的响应可能
会被人工延迟
--enable-follow-x-forwarded-for:当一个请求被另一些代理服务器转发时通过从http头中寻找X-Forwarded-For来发现直接或间接的客户端IP地址
--with-large-files:开启大文件支持
--with-default-user=squid:设置默认用户  
四、配置squid实现反向代理

  
  ①新建squid cache目录

# cp /usr/local/squid/sbin/squid /etc/init.d/    ##复制启动文件
# mkdir /data/{cache,logs}              ##新建squid cache目录
# chown -R squid.squid /data/  

  ②配置squid.conf
# vi /etc/squid.conf
##############配置squid服务器用户和组############
cache_effective_user squid
cache_effective_group squid
###########配置squid服务器主机名及管理员邮箱#####
visible_hostname squid
cache_mgr zhi@qq.com
#############配置squid为加速模式#################
http_port 80 accel vhost vport   ##指定squid监听http请求的端口并设定为accel加速模式
#icp_port 3130       ##3130(UDP)负责与邻近Proxy互相沟通彼此的cache数据库
##############配置squid父节点#############
######cache_peer语法:cache_peer [上层proxy主机名] [proxy角色] [proxy port] [icp port] [额外参数]
####proxy角色:parent(上层)、sibling(邻居proxy)
####额外参数:no-query---向上层Proxy请求数据时,可不需发送icp包,以降低主机的负担;
####proxy-only---向上层proxy请求数据时不缓存至本地的proxy服务器内,降低本地proxy负担;
#####originserver参数指明是源服务器;
#######round-robin参数指明squid通过轮询分发请求至父节点;wieght=n:权重
#cache_peer 192.168.10.132 parent 80 0 no-query originserver round-robin name=node1
#cache_peer 192.168.10.133 parent 80 0 no-query originserver round-robin name=node2
cache_peer 192.168.10.132 parent 80 0 originserver round-robin weight=1
cache_peer 192.168.10.133 parent 80 0 originserver round-robin weight=1
###########配置不同域名转发到不同的cache_peer上#####
####语法:cache_peer_domain [上层proxy主机名] [所请求域名]
cache_peer_domain node1 node1.zhi.com
cache_peer_domain node2 node2.zhi.com
###########访问控制、日志和缓存目录设置###########
acl localnet src 192.168.10.135
acl all src 0.0.0.0/0.0.0.0
http_access allow all                 ##全部放行
icp_access allow localnet
cache_log /data/logs/cache.log          ##设置缓存日志文件
access_log /data/logs/access.log squid        ##设置访问日志文件
cache_dir ufs /data/cache/ 1000 16 256    ##设置cache目录、数据存储格式、为缓存目录
                      ##分配的磁盘空间(MB)、cache一级子目录个数、cache二级子目录个数
############对squid的一些优化#####################
maximum_object_size 10240 KB         ##能缓存的最大对象为10M
maximum_object_size_in_memory 512 KB           ##内存中缓存的最大对象512K
cache_mem 256 MB                 ##squid用于缓存的内存量  

  ③验证配置并启动squid
# /usr/local/squid/sbin/squid -k parse     ##验证语法和配置
# /usr/local/squid/sbin/squid -z       ##初始化缓存空间
# systemctl start squid
# systemctl status squid  
  

  五、配置后端Web服务器
  
  WEB1:
# vi /etc/httpd/conf/httpd.conf
ServerName node1.zhi.com:80
# echo "squid in 192.168.10.132" > /var/www/html/index.html
# systemctl start httpd  WEB2:
# vi /etc/httpd/conf/httpd.conf
ServerName node1.zhi.com:80
# echo "squid in 192.168.10.133" > /var/www/html/index.html
# systemctl start httpd  客户端主机:
# cat /etc/hosts
10.10.10.10  node1.zhi.com
10.10.10.10  node2.zhi.com
10.10.10.10  www.baidu.com  

  六、测试
  ①测试
  在客户端浏览器输入node1.zhi.com查看
  

  在客户端浏览器输入node2.zhi.com查看
  
  在客户端浏览器输入www.baidu.com查看
  由于squid cache服务器没有www.baidu.com缓存或代理,所以提示了错误并显示了管理员地址
  

  ②查看log

  查看squid服务器log
  
  查看Web1的log
  

  查看Web2的log

  至此,一个简单的squid cache反向代理就搭建好了。


  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655925-1-1.html 上篇帖子: Squid-7773725 下篇帖子: 转自CU关于squid优化的办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表