ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Squid代理服务器安装及部署

2019-08-16 18:55:18  阅读:235  来源: 互联网

标签:www enable squid 部署 Squid 代理服务器 缓存 root


Squid是Linux系统中最常用的一款开源代理服务软件,可以很好地实现HTTP和FTP,以及DNS基础、SSL等应用的缓存代理,功能非常强大。

缓存代理概述

作为应用层的代理服务软件,Squid主要提供缓存加速、应用层过滤控制的功能。

1.代理的工作机制

当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容返回给客户机;如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,获得返回的Web页面以后,将网页数据保存到缓存中并发送给客户机,如图:
Squid代理服务器安装及部署
HTTP代理的缓存加速对象主要是文字、图像等静态Web元素。使用缓存机制后,当客户机在不同的时候访问同一Web元素,或者不同的客户机访问相同的Web元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向Internet提交重复的Web请求的过程,提高了客户机的Web访问响应速度。

由于客户机的Web访问请求实际上是由代理服务器来代替完成的,从而可以实现的功能有:
1. 隐藏客户端的真实IP;
2. 通过缓存,提高上网速度;
3. 控制上网行为。

2.代理服务器的类型

根据实现方式不同,代理服务器可分为:

传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。通过域名访问网页,域名解析请求也会发送到指定的代理服务器。

透明代理:提供与传统的相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向,实际仍然交给代理服务器来处理,重定向的过程对于客户机来说是“透明”的,用户根本不知道自己在使用代理服务,所以称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发送到DNS服务器。

实际应用中,传统代理多适用于Internet环境,如为QQ程序使用代理可以隐藏本机真实IP地址、为下载工具使用多个代理可以规避服务器的并发连接限制;而透明代理多适用于局域网环境,如在Linux网关中启用透明代理后,局域网主机无须进行额外设置就可以享受更好的上网速度。

Squid安装及基本配置

1.编译安装Squid

Squid软件包的网盘下载链接:https://pan.baidu.com/s/1IBMvh8kbi4KSBvfDUC1dTg
提取码:4q9l

[root@localhost ~]# tar zxf squid-3.5.23.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/squid-3.5.23/
[root@localhost squid-3.5.23]#./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
各配置项含义:
--prefix:指定安装目录
--sysconfdir=/etc  单独将配置文件修改到其他目录、
--enable-arp-acl   可以在规划中设置直接通过客户端MAC进行管理,防止客户端使用ip欺骗
--enable-linux-netfiler 使用内核过滤
--enable-linux-tproxy  支持透明代理
--enable-async-io=值  //异步i/o提升存储性能,相当于--enable-pthreads
--enable-err-language"=Simplify_Chinese" //错误信息的显示语言
--enable-underscore   允许url中有下划线
--enable-poll         使用poll()模式,提升性能
--enable-gnuregex     使用gnu正则表达式
[root@localhost squid-3.5.23]# make && make install

安装完成后,创建链接文件、创建专属用户和组:

[root@localhost squid-3.5.23]# ln -s /usr/local/squid/sbin/* /usr/local/sbin
[root@localhost squid-3.5.23]# useradd -M -s /sbin/nologin squid
[root@localhost squid-3.5.23]# chown -R squid:squid /usr/local/squid/var

2.编辑Squid服务的配置文件

[root@localhost squid-3.5.23]# vim /etc/squid.conf
                      ………………                            //省略部分内容
cache_effective_user squid                           //指定squid程序用户, 需要手工添加
cache_effective_group squid                        //程序基本组账户,需要手工添加
visible_hostname www.benet.com          //手工添加主机名,,需要手工添加
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 
//设置缓存目录的大小,一级子目录和二级子目录的个数(默认有此项,去点前面的#)
[root@localhost ~]# hostname www.benet.com
[root@localhost ~]# bash
[root@www ~]# 
//配置文件中的主机名一定是本机的主机名

3.Squid的运行控制

1)检查配置文件语法是否正确

[root@www ~]#  squid -k parse

2)启动、停止Squid服务
第一次启动Squid服务时u,会自动初始化缓存目录。

[root@www ~]#  squid -z                                   //-z选项用来初始化缓存目录
[root@www ~]#  ls /usr/local/squid/var/cache/squid/
00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
//查看Squid的缓存目录
[root@www ~]#  squid                                       //启动Squid服务
[root@www ~]#  netstat -anpt | grep squid       //查看服务监听状态
tcp6       0      0 :::3128                 :::*                    LISTEN      45471/(squid-1)
[root@www ~]#  squid -k reconfigure
//重启Squid服务(必须是使用服务本身的启动命令启动服务,而且服务必须是已经启动的)
[root@www ~]#  kill 45471                               //通过杀服务进程号的方式停止Squid服务

3)编写Squid服务脚本
自行编写Squid服务脚本,使其变为系统服务。(当然不是必须的)!

[root@www ~]#  vim /etc/init.d/squid
#!/bin/bash
# chkconfig: 2345 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 -anpt | grep squid &> /dev/null
        if
                [ $? -eq 0 ]
        then
                echo "squid已经启动!!!"
        else
                echo "正在启动squid..."
        $CMD
        fi
;;
stop)
        $CMD -k kill &> /dev/null
        rm -rf $PID &> /dev/null
;;
status)
        [ -f $PID ] &> /dev/null
        if
                [ $? -eq 0 ]
        then
                netstat -anpt | grep squid
        else
                echo "squid没有启动!!!"
        fi
;;
restart)
        $0 stop &> /dev/null
        echo "正在关闭squid..."
        $0 start &> /dev/null
        echo "正在启动squid..."
;;
reload)
        $CMD -k reconfigure
;;
check)
        $CMD -k parse
;;
*)
echo "用法:$0 {start | stop | restart | reload | check| status}"
;;
esac

[root@www ~]#  chmod +x /etc/init.d/squid 
[root@www ~]#  chkconfig  --add squid
[root@www ~]#  systemctl restart squid

Squid服务安装及基本部署大致就这些,以后遇到问题,也会更新的!

标签:www,enable,squid,部署,Squid,代理服务器,缓存,root
来源: https://blog.51cto.com/14157628/2430239

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有