Squid代理服务器--基础篇

一、缓存代理概述


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

1、代理的工作机制

第一种情况:Squid服务器中有缓存

当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机;

第二种情况:Squid服务器中没有缓存

如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,当获得返回的Web页面以后,将网页数据保存到缓存中并发送给客户机

HTTP代理的缓存加速对象主要是文字、图像等静态Web元素。使用缓存机制后,当客户机在不同的时候访问同一Web元素,或者不同的客户机访问相同的Web元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向Internet提交重复的Web请求的过程,提高了客户机的Web访问响应速度

由于客户机的Web访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色,所以有机会针对要访问的目标、客户机的地址、访问的时间段等进行过滤控制

2、代理的基本类型

根据实现方式不同,代理服务可分为传统代理和透明代理两种常见的代理服务:

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

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

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

二、安装及运行控制

1、编译安装Squid

配置Squid的编译选项时,将安装目录设为/usr/local/squid,其他具体选项根据实际需求来定,配置前可参考“./configure  --help”给出的说明

[[email protected] ~]# tar -zxf squid-3.5.7.tar.gz

[[email protected] ~]# cd squid-3.5.7/

[[email protected] squid-3.5.7]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-linux-netfilter --enable-arp-acl --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex

[[email protected] squid-3.5.7]# make && make install

上述选项含义如下:

--prefix=/usr/local/squid     \\安装目录

--sysconfdir=/etc/                     \\单独将配置文件修改到其他目录

--enable-arp-acl                        \\可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗

--enable-linux-netfilter           \\使用内核过滤

--enable-linux-tproxy               \\支持透明模式

--enable-async-io=值                \\异步I/O,提升存储性能

--enable-err-language="Simplify_Chinese"                \\错误信息的显示语言

--enable-underscore                  \\允许URL中有下划线

--enable-poll                                  \\使用Poll()模式,提升性能

--enable-gnuregex                        \\使用GNU正则表达式

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

[[email protected] ~]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/

[[email protected] ~]# useradd -M -s /sbin/nologin squid

[[email protected] ~]# chown -R squid:squid /usr/local/squid/var/

2、Squid的配置文件

Squid服务的配置文件位于/etc/squid.conf,充分了解配置行的作用将有助于管理员根据实际情况灵活配置代理服务,更详细的配置项请参考/etc/squid.conf.documented文件

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 localnet src fc00::/7       # RFC 4193 local private network range

acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

acl SSL_ports port 443

acl Safe_ports port 80          # http

acl Safe_ports port 21          # ftp

acl Safe_ports port 443         # https

acl Safe_ports port 70          # gopher

acl Safe_ports port 210         # wais

acl Safe_ports port 1025-65535  # unregistered ports

acl Safe_ports port 280         # http-mgmt

acl Safe_ports port 488         # gss-http

acl Safe_ports port 591         # filemaker

acl Safe_ports port 777         # multiling http

acl CONNECT method CONNECT

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager

http_access deny manager

http_access allow localnet

http_access allow localhost

http_access deny all

http_port 3128                                           \\用来指定代理服务监听的地址和端口(默认的端口号为3128)

cache_effective_user    squid                \\指定squid的程序用户,用来设置初始化、运行时缓存的账号

cache_effective_group   squid               \\默认为cache_effective_user指定账号的基本组

coredump_dir /usr/local/squid/var/cache/squid

refresh_pattern ^ftp:           1440    20%     10080

refresh_pattern ^gopher:        1440    0%      1440

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

refresh_pattern .               0       20%     4320

3、Squid的运行控制

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

[[email protected] ~]# squid -k parse

2)启动、停止Squid

第一次启动Squid服务时,会自动初始化缓存目录。在没有可用的Squid服务脚本的情况下,也可以直接调用Squid程序来启动服务,这时需要先进行初始化

[[email protected] ~]# squid -z                    \\-z选项用来初始化缓存目录

[[email protected]calhost ~]# squid                        \\启动Squid服务

确认Squid服务处于正常监听状态

[[email protected] ~]# netstat -utpln | grep "squid"

tcp6       0      0 :::3128                 :::*                    LISTEN      19958/(squid-1)

3)使用Squid服务脚本

为了使Squid服务的启动、停止、重载等操作更加方便,可以编写Shell服务脚本,并使用chkconfig和service工具来进行管理

#!/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 -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

[[email protected] ~]# chmod +x /etc/init.d/squid

[[email protected] ~]# chkconfig --add squid                        \\添加为系统服务

[[email protected] ~]# chkconfig squid on

这样一来,就可以通过Squid脚本来启动、停止、重启、重载Squid服务器了,方法是在执行时添加相应的start、stop、restart、reload参数

时间: 2024-10-12 16:22:53

Squid代理服务器--基础篇的相关文章

Squid代理服务器--实战篇

一.传统代理 使用传统代理的特点在于,客户机的相关程序(如IE浏览器.QQ聊天工具)必须指定代理服务器的地址.端口等信息.下面通过一个简单的应用案例来学习传统代理的配置和使用 基于Internet网络环境,案例的主要需求描述如下: 在Linux主机B上,构建Squid为客户机访问各种网站提供代理服务,但禁止通过代理下载超过10MB大小的文件 在客户机C上,指定主机B作为Web访问代理,以隐藏自己的真实IP地址 针对上述实验环境,主机B作为代理服务器必须正确构建Squid服务,并允许客户机使用代理

Squid服务基础及构建代理服务器

1.1 Squid服务基础 1.1.1 缓存代理概述 Squid:应用层的代理服务软件,主要提供缓存加速.应用层过滤控制的能 1.代理的工作机制: 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需呀的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机要的访问页面,则由代理服务器向internet发送请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机,如下图所示. 2.代理的基本类型 传统代理:也就是普通的代理服务器

2-12-配置squid代理服务器加快网站访问速度

本节所讲内容: squid服务器常见概念 squid服务器安装及相关配置文件 实战:配置squid正向代理服务器 实战:配置透明squid代理提升访问速度 实战:配置squid反向代理加速度内网web服务器访问速度 squid服务概述: 全称: squid cache,是一个流行的自由软件(GNU通用公共许可证). 主要有连个功能:  代理服务器 和 为web服务器提供缓存 应用广泛: 1. 共享网络资源,缓存万维网; 2.为web服务器前置缓存提高web服务器的访问速度; 3. 域名和其他网络

搭建squid代理服务器

准备环境: 客户机:192.168.118.4 squid代理服务器:192.168.118.3(内网IP)1.1.1.1(外网IP) web服务器:1.1.1.2 实现目标:客户机通过squid代理服务器访问web服务器 一.普通代理 1.首先将各个主机的防火墙关闭,然后实现squid服务器分别与另外两台机器互通 2.给web服务器搭建HTTP服务 [[email protected] ~]# yum -y install httpd [[email protected] ~]# servic

负载均衡集群HAProxy基础篇

负载均衡集群HAProxy基础篇 一.   HAPorxy简介 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的.借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案. 二.   HAPorxy优点 免费开源.可靠性和稳定性非常好. HAProxy可以处理数据可达10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE

oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

  PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的,是带有了分支和循环的语言. PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00

Hybrid APP基础篇(四)->JSBridge的原理

说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:JS如何调用Native 第三步:Native如何得知api被调用 第四步:分析url-参数和回调的格式 第五步:Native如何调用JS 第六步:H5中api方法的注册以及格式 进一步完善JSBridge方案 思路 实现 注意 完整的JSBridge 完整调用流程图 另外实现:不采用url sche

网络基础篇----计算机网络基本概述(1)

享受生活  热爱挑战                                                                刘明远分享    一   计算机网络基本概述(1) 每章一段话: 不要让自己闲下来,给自己找些事情做.哪怕是看看书. 正文   (提示:本章内容比较无聊,最好当看故事一样来看,不必记下只需了解,内容基础) 1什么是计算机网络 号称新的"电力火花"是以计算机.通信.信息技术为支撑的计算机网络技术. 计算机网络将两台或多台计算机通过电缆或网络设

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP