搭建squid代理服务器

搭建squid代理服务器

安装

[[email protected] ~]# yum install -y squid
# 启动
[[email protected] ~]# service squid start
正在启动 squid:.                                          [确定]

环境

  • 150服务器,ip地址192.168.1.150,添加两个网卡,配置eth0为桥接,eth1为vmnet4模式,eth1的ip地址192.168.2.1
  • 170服务器,配置eth0位vmnet4模式,ip地址192.168.2.2

配置squid正向代理服务器

使内网主机170服务器192.168.2.2能够通过150服务器上的squid代理服务器加速上网

  • 修改squid配置文件

    # 将http_access deny all修改为
    http_access allow all
    
  • 重启服务

    service squid restart
    
  • 在170服务器配置firefox网络代理为192.168.2.1 端口3128

配置透明squid代理提升访问速度

客户端不用在浏览器里指定代理服务器的ip地址和端口号,就可以直接访问公网上的网站服务器

  • 修改squid配置文件

    # 将http_access deny all修改为
    http_access allow all
    # 将http_port 3128修改为
    http_port 3128 transparent
    # 打开路由转发功能
    [[email protected] ~]# vim /etc/sysctl.conf
    # 将net.ipv4.ip_forward = 0修改为
    net.ipv4.ip_forward = 1
    [[email protected] ~]# sysctl -p
    # 配置iptables
    # 让内网可以上网
    iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.1.150
    # 将内网源地址为192.168.2.0/24的网段tcp协议端口为80的请求转发到3128端口
    iptables -t nat -A PREROUTING -s 192.168.2.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    
    # 测试访问,不用再设置浏览器的网络代理
    www.baidu.com
    192.168.1.1
    192.168.2.1
    

配置squid反向代理加速内网web服务器响应速度

让宿主机访问192.168.1.150代理服务器。192.168.1.150代理服务器缓存170服务器的192.168.2.2 web服务器中的数据。实现150服务器给170服务器加速80和80两个服务。

  • 配置宿主机

    # 在hosts中添加
    192.168.1.150 www.serverA.com
    192.168.1.150 www.serverB.com
    
  • 配置150服务器,关闭iptables和selinux

    # 将http_access deny all修改为
    http_access allow all
    
    # vhost表示支持多虚拟主机代理多台机器
    http_port 80 vhost
    
    # 缓存的机器
    # 代理192.168.2.2的80端口名字为a
    cache_peer 192.168.2.2 parent 80 0 no-query originserver weight=1 name=a
    # 代理192.168.2.2的81端口名字为b
    cache_peer 192.168.2.2 parent 81 0 no-query originserver weight=1 name=b
    
    # 当访问www.serverA.com域名的时候,则squid向192.168.2.2服务器的80端口发送请求 
    cache_peer_domain a www.serverA.com
    # 当访问www.serverB.com域名的时候,则squid向192.168.2.2服务器的81端口发送请求 
    cache_peer_domain b www.serverB.com
    
    # 访问控制
    cache_peer_access a allow all
    cache_peer_access b allow all
    
    # 重启
    service squid restart
    
  • 配置170服务器

    • 配置apache服务

      [[email protected] ~]# vim /etc/httpd/conf/httpd.conf
      Listen 80
      Listen 81
      NameVirtualHost *:80
      <VirtualHost *:80>
          ServerAdmin [email protected]
          DocumentRoot /var/www/html
          ServerName www.serverA.com
          ErrorLog logs/dummy-host.example.com-error_log
          CustomLog logs/dummy-host.example.com-access_log common
      </VirtualHost>
      <VirtualHost *:81>
          ServerAdmin [email protected]
          DocumentRoot /var/www/html/b
          ServerName www.serverB.com
          ErrorLog logs/dummy-host.example.com-error_log
          CustomLog logs/dummy-host.example.com-access_log common
      </VirtualHost>
      
      echo "serverA.com" > /var/www/html/index.html
      echo "serverB.com" > /var/www/html/b/index.html
      
    • 重启apache

      service httpd restart
      
  • 在宿主机访问

    http://www.serverA.com
    http://www.serverB.com