加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 系统 > 正文

如何实现squid传统代理

发布时间:2022-01-11 11:47:32 所属栏目:系统 来源:互联网
导读:本篇文章给大家分享的是有关如何实现squid传统代理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 安装squid代理服务器 yum install gcc gcc-c++ make -y yum install perl-devel -y y
  本篇文章给大家分享的是有关如何实现squid传统代理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
 
  安装squid代理服务器
  yum install gcc gcc-c++ make -y
  yum install perl-devel -y
  yum install lrz* -y
  tar xf squid-3.5.27.tar.gz -C /opt/
  如何实现squid传统代理
 
  cd /opt/squid-3.5.27/
  ./configure
  --prefix=/usr/local/squid
  --sysconfdir=/etc
  --enable-arp-acl  
  --enable-linux-netfilter
  --enable-linux-tproxy  
  --enable-async-io=100  
  --enable-err-language="Simplify_Chinese"
  --enable-underscore
  --enable-poll
  --enable-gnuregex
  注:
  ./configure   #配置
  --prefix=/usr/local/squid    #指定安装路径
  --sysconfdir=/etc   #配置文件存储目录
  --enable-arp-acl     #可在ACL中设置通过MAC地址进行管理,防止IP欺骗
  --enable-linux-netfilter   #使用内核过滤,目的是对透明模式提供支持
  --enable-linux-tproxy     #允许使用透明模式
  --enable-async-io=100     #异步I/O,用来提升存储性能。
  --enable-err-language="Simplify_Chinese"  #
  --enable-underscore   #允许URL中有下划线
  --enable-poll    #使用Poll()模式,提升性能
  --enable-gnuregex    #使用GNU正则表达式
  make && make install
  ln -s /usr/local/squid/sbin/* /usr/local/sbin
 
  useradd -M -s /sbin/nologin squid
 
  chown -R squid:squid /usr/local/squid/var/
  如何实现squid传统代理
 
  vi /etc/squid.conf
 
  http_access allow all
  http_port 3128 //在下面新增
  visible_hostname 192.168.80.181   #确定公共主机名
  cache_mem 64 MB
  cache_swap_low 80
  cache_swap_high 97
  cache_dir ufs /usr/local/squid/var/cache/squid 512 16 256 //配置硬盘缓存,打开#.缓存目录512M,其中一级目录16个,二级256个
 
  cache_effective_user squid  #用来设置初始化、运行时缓存的账号,否则启动不成功
  cache_effective_group squid  #//默认为指定账号的基本组
  如何实现squid传统代理
 
  squid -k parse //检查配置文件
  如何实现squid传统代理
 
  squid –k rec //重新加载配置文件
  squid -zX //初始化缓存目录
  --------------制作squid系统服务脚本---------
  为了使Squid服务的启动、停止、重载等操作更加方便,可以编写Squid服务脚本,并使用chkconfig和service工具来进行管理。
  vi /etc/init.d/squid
 
  #!/bin/bash
  #chkconfig: 35 90 25
  #config: /etc/squid.conf
  #pidfile: /usr/local/squid/var/run/squid.pid
  #Description: Squid - Internet Object Cache
 
  PID="/usr/local/squid/var/run/squid.pid"
  CONF="/etc/squid.conf"
  CMD="/usr/local/squid/sbin/squid"
 
  case "$1" in
          start)
                  netstat -utpln | grep squid &>/dev/null
                  if [ $? -eq 0 ]
                          then
                                  echo "Squid is running"
                  else
                          $CMD
                  fi
          ;;
          stop)
                  $CMD -k kill &>/dev/null
                  rm -rf $PID &>/dev/null
          ;;
          status)
                  [ -f $PID ] &>/dev/null
                          if [ $? -eq 0 ]
                            then
                                  netstat -utpln | grep squid
                          else
                                  echo "Squid is not running"
                          fi
      ;;
          restart)
                  $0 stop &>/dev/null
                  echo "正在关闭Squid..."
                  $0 start &>/dev/null
                  echo "正在启动Squid..."
          ;;
          reload)
                  $CMD -k reconfigure
          ;;
          check)
                  $CMD -k parse
          ;;
          *)
                  echo "用法:{start | stop | restart | reload | check | status}"
  esac
  chmod +x /etc/init.d/squid
  如何实现squid传统代理
 
  chkconfig --add squid
  chkconfig squid on
 
  service firewalld stop
  setenforce 0
  service squid start
 
  netstat -anpt | grep 3128
  如何实现squid传统代理
 
  搭建web服务器:
  yum install httpd -y
  cd /var/www/html
  dd if=/dev/zero of=test1.tgz bs=1M count=11
  dd if=/dev/zero of=test2.tgz bs=1M count=2
  [root@lq1 squid-3.5.27]# vi /etc/squid.conf
 
  reply_body_max_size 10 MB                   //禁止下载的超过10MB的文件
  maximum_object_size 4096 KB                 //超过4MB的文件不进行缓存
  http_access deny all                        //前面两行需要放在这行之上才生效
  如何实现squid传统代理
 
  重启squid代理服务
  service squid start
  vi /etc/httpd/conf/httpd.conf
   把这行注释去掉ServerName www.example.com:80
   DirectoryIndex index.html    后面添加index.php
   service httpd start
  如何实现squid传统代理
  如何实现squid传统代理
  如何实现squid传统代理
 
  测试,在windows浏览器中设置代理服务地址,输入192.168.80.101/test1.tgz。出现一下:
  如何实现squid传统代理
 
  在输入192.168.80.101/test2.tgz
  如何实现squid传统代理
 
  查看Squid访问日志的新增记录
  tail /usr/local/squid/var/logs/access.log  //可以看到客户机C访问Web服务器的记录
  如何实现squid传统代理
 
  查看Web访问日志的新增记录
  tail /var/log/httpd/access_log //可以看到来自Squid服务器的访问记录,Squid服务器代替客户机C访问Web服务器
  如何实现squid传统代理
 
  当客户机再次访问同一页面时,Squid访问日志会增加新的记录,而Web访问日志的记录不会变化(除非页面变更或强制刷新等操作)。这说明当客户机访问同一静态页面时,实际上是由代理服务器通过缓存提供的.
  在linux服务器上测试:
 
  yum   install   wget  -y
 
  在linux系统设置代理服务器
  [root@lq3 ~]# vi /etc/wgetrc   
  HTTP_PROXY=http://192.168.80.100:3128
  HTTPS_PROXY=https://192.168.80.100:3128
  FTP_PROXY=http://192.168.80.100:3128
  NO_PROXY=192.168.1.,192.168.2.
  如何实现squid传统代理
 
  [root@lq3 ~]# source /etc/wgetrc
  [root@lq3 ~]# wget http://192.168.80.101/test1.tgz
  如何实现squid传统代理
 
  [root@lq3 ~]# wget http://192.168.80.101/test2.tgz
  如何实现squid传统代理
 
  在web服务器上:
  [root@lq2 html]# tail -f  /etc/httpd/logs/access_log
  如何实现squid传统代理
 
  需要开第二个网卡
 
  案例:在Linux网关上构建Squid为客户机访问Internet提供代理服务,在客户机上设置IP地址、默认网关,不需要指定代理服务器的地址、端口等信息
 
  cp -p ifcfg-ens32 ifcfg-ens34
  vi ifcfg-ens34
  如何实现squid传统代理
 
  systemctl restart network
  在squid代理服务器上:
  vi /etc/squid.conf
 
  http_port 192.168.90.100:3128 transparent (内网地址)
 
  yum install -y iptables*    安装iptables防火墙
 
  iptables -F    #清空防火墙规则
 
  iptables -t nat -A PREROUTING -i ens34 -p tcp --dport 80 -s 192.168.90.0/24 -j REDIRECT --to-ports 3128
    //将80端口转到3128端口,有透明代理访问网站服务器
 
  iptables -t nat -L
 
  service iptables save    #保存规则
 
  service iptables start
  在测试客户端,输入192.168.80.101:
 
  输入192.168.80.101/test1.tgz

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读