linux高级管理——Squid代理

一、squid服务基础:

1.1缓存代理的概述:

代理的工作机制
当客户机通过代理来请求Web页面时.指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求.获得返回的Web页面以后.将网页数据保存到缓存中并发送给客户机。HTTP代理的缓存加速对象主要是文字.图像等静态Web元素。使用缓存机制后,当客户机在不同的时候访问同-Web元素.或者不同的客户机访问相同的Web元素时,可以直接从代理服务器的缓存中获得结果。这样就大大减少了向 Internet 提交重复的Web请求的过程,提高了客户机的 Web访问响应速度。
代理的基本类型
根据实现方式不同,代理服务可分为传统代理和透明代理两种常见的代理服务。

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

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

1.2编译安装squid:

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

[root@localhost squid-3.5.23]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-linnux-netfilter --enable-async-io=240 --enable-default-err-language=Simplify_Chinese --disable-poll --enable-epoll --enable-gnuregex

[root@localhost squid-3.5.23]# make
[root@localhost squid-3.5.23]# make install

 --prefix=/usr / local / squid:安装目录。

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

--enable—linux--netfilter:使用内核过滤。

--enable-async一io=值:异步I/O.,提升存储性能,相当于“--enable-pthreads --enable-storeio=ufs . aufs --with -pthreads --with-aufs一thread=值”.

--enable一default-err—language=Simplify_Chinese;错误信息的显示语言.

--disable-poll 与---enable一epoll:关闭默认使用poll模式.开启epoll模式提升性能。

--enable一gnuregex:使用GNU正则表达式。

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

[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/

 1.3Squid 的配置文件
Squid 服务的配置文件位于/etc/squid , conf,充分了解配置行的作用将有助于管理员根据实际情况灵活配置代理服务。

cache_effective_user squid 
##这一项指定squic的程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功!

cache_effective_group squid

 

1.4 Squid的运行控制

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

[root@localhost squid-3.5.23]# squid -k parse

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

[root@localhost ~]# squid -z
[root@localhost ~]# squid

确认Squid服务处于正常监听状态。
[root@localhost ~]# netstat -anpt | grep "squid"

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

[root@localhost ~]# 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 is running"
		  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 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 "用法:$0 {start | stop | restart | reload | check | status}"
  ;;
esac

这样一来.就可以通过Squid 脚本来启动、停止.重启.重载Squid 服务器了.方法是在执行/etc/init .d/ squid脚本时添加相应的start、stop、restart参数或通过systemctl 命令控制Squid服务。
二、构建代理服务器:

2.1传统代理:

使用传统代理的特点在于.客户机的相关程序〈如E浏览器.QQ聊天软件)必须指定代理服务器的地址.端口等基本信息。下面通过一个简单的应用案例来学习传统代理的配置和使用方法。

Squid服务器的配置
配置 Squid实现传统代理服务时.需要注意添加http_access allow all访问策略.以便允许任意客户机使用代理服务。除此以外,为了限制下载的文件大小,还需要设置reply._body..max_size项,其他各种参数均可保持默认。

修改squid .conf 配置文件.

[root@localhost ~]# vim /etc/squid.conf
reply_body_max_size 10 MB
http_access allow all


 重载squid服务

修改squid .conf配置文件以后.需要重新启动服务方可生效。执行“systemctl restart squid”或"squid -k reconfigure”,都可以重新加载服务配置。

[root@localhost ~]# systemctl restart squid

客户机配置

 

2.2透明代理: 

透明代理提供的服务功能与传统代理是--致的,但是其“透明”的实现依赖于默认路由和防火墙的重定向策略,因此更适用于为局域网主机服务.而不适合为internet 中的客户机提供服务。下面也通过一个简单的应用案例来学习透明代理的配置和使用。
1.配置Squid支持透明代理
Squid服务的默认配置并不支持透明代理.因此需要调整相关设置。对于2.6以上版本的Squid服务.只要在htp_port配置行加上一个“transparent”(透明)选项.就可以支持透明代理了。

2.设置firewalld的重定向策略
透明代理中的Squid服务实际上是构建在Linux网关主机上的,因此只需正确设置防火墙策略.就可以将局域网主机访问Internet的数据包转交给Squid进行处理。这需要用到firewalld的P伪装与端口转发策略,其作用是实现本机端口的重定向.将访问网站协议HTTP、HTTPS的外发数据包转交给本机的Squid 服务(3128端口).
防火墙做端口转发操作,将访问本机80、443端口的请求转发到3128端口。
 


 


 


 


 


 


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299378.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

整合事务,名词,概念

1、MySQL是单进程多线程(而Oracle等是多进程),也就是说MySQL实例在系 统上表现就是一个服务进程,即进程,(通过多种方法可以创建多实例,再安装一个端口号不同的mysql,或者通过workben…

滞回比较器(施密特触发器)在软件中的应用-电池电压显示

1、单限比较器和滞回比较器的区别 在单限比较器中,输入电压在阈值电压附近的任何微小变化,都会引起输出电压的跃变。不管这种微小变化是来源于输入电压还是来源于外部干扰。因此,虽然单限比较器很灵敏,但是抗干扰能力差。在单限比…

学习Redis缓存

学习Redis缓存 NoSQL和SQL的区别缓存缓存作用缓存成本添加Redis缓存 Redis特征Redis中数据结构Redis通用命令String类型Key的层级格式Hash类型Redis的Java客户端 NoSQL和SQL的区别 缓存 缓存就是数据交换的缓冲区,是存储数据的临时地方,一般读写性比较高…

10款有趣的前端源码分享(附效果图及在线演示)

分享10款非常有趣的前端特效源码 其中包含css动画特效、js原生特效、svg特效以及小游戏等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 自毁按钮动画特效 自毁按钮动画特效 点击打开盒子可以点击自毁按钮 进而会出现自毁…

使用Python+selenium3.0实现第一个自动化测试脚本

这篇文章主要介绍了使用Pythonselenium实现第一个自动化测试脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 最近在学web自动化,记录一下学习过程。…

Linux驱动学习—中断

1、中断基础概念 1.1 什么是中断 CPU在正常运行期间&#xff0c;由外部或者内部引起的时间&#xff0c;让CPU停下当前正在运行的程序&#xff0c;转而去执行触发他的中断所对应的程序&#xff0c;这就是中断。 响应中断的过程&#xff1a; <1>中断请求 <2>中断…

Spring Cloud之OpenFeign异常处理

简易原理图 原理基于请求头传递错误消息&#xff0c;利用aop和全局异常拦截机制实现。 服务提供者 远程调用本地方法b&#xff0c;throw异常出来FeignExceptionAspect AOP拦截处理异常到请求头中&#xff0c;继续throwGlobalExceptionHandler处理&#xff0c;返回响应Respons…

1868_C语言单向链表的实现

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/c_basic: little bits of c. 1868_C语言中简单的链表实现 简单整理一下链表的实现&#xff0c;这一次结合前面看到的一些代码简单修改做一个小结。 主题由来介绍 以前工作之中链表的使用其实不多&#xff0c;主要是…

C++动态内存分配(动态内存分配函数)栈区

内存拷贝函数&#xff1a; void *memcpy(void *dest,const void *src,size_tn);#include<string.h>功能&#xff1a;从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest内存地址的起始位置 分配内存使用new 例如&#xff1a;salarynew int[num]; 最后需要释放…

三、Qt核心与Qt类库

一、Qt核心&#xff1a;元对象系统 1、Qt核心特点 Qt对标准C进行了扩展&#xff0c;引入了一些新的概念和功能元对象编译器&#xff08;MOC&#xff09;是一个预处理器&#xff0c;先将Qt的特性程序转为标准C程序&#xff0c;再由标准C编译器进行编译Qt为C语言增加的特性在Qt…

Android学习(三):在Android虚拟机中运行项目

Android学习&#xff08;三&#xff09;&#xff1a;在Android虚拟机中运行项目 一、前期准备 在系统环境变量中添加ANDROID_SDK_HOME&#xff0c;把值指定到一个其他目录。就可以把Android AVD(虚拟机)创建在指定目录下。修改环境变量后&#xff0c;如果Android Studio是在运…

Java Swing手搓童年坦克大战游戏(I)

前言 业余偶尔对游戏有些兴趣&#xff0c;不过这样的时代&#xff0c;硬件软件飞速进步&#xff0c;2D游戏画面都无比精美&#xff0c;之前的8bit像素游戏时代早就过去了&#xff0c;不过那时候有许多让人印象深刻的游戏比如魂斗罗、超级玛丽、坦克大战(Battle City)等等。 学…

1866_FreeRTOS的存储管理方案heap_4分析

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. 1866_FreeRTOS的存储管理方案heap_4分析 对FreeRTOS的heap_4进行分析拆解&#xff0c;按照文学式编程的方式重新组织成个人笔记。 主题由来介绍 free以及malloc这样的存…

辗转相除法求最大公约数

介绍 辗转相除法&#xff08;又称欧几里德算法&#xff09;是一种求最大公约数的算法。它基于这样一个事实&#xff1a;两个数的最大公约数等于较大数和较小数余数的最大公约数。即两个数相除&#xff0c;再将除数和余数反复相除&#xff0c;当余数为0时&#xff0c;取当前除法…

Python异常捕获和处理语句 try-except-else-finally

目录 try-except-else-finally语句 1. 基本用法 2. 多个异常处理 3. 处理所有其他异常 4. 多个except子句 5. 使用else子句 6. 使用finally子句 7. 使用as关键字 实例 例1 例2 例3 例4 例5 例6 例7 例8 结论 try-except-finally语句 在Python中&#xff0c;try-e…

概率论与数理统计 知识点+课后习题

文章目录 &#x1f496; [学习资源整合](https://www.cnblogs.com/duisheng/p/17872980.html)&#x1f4da; 总复习&#x1f4d9; 选择题&#x1f4d9; 填空题&#x1f4d9; 大题1. 概率2. 概率3. 概率4. P5. 概率6. 概率密度函数 F ( X ) F(X) F(X)7. 分布列求方差 V ( X ) …

【STM32】STM32学习笔记-DMA直接存储器存储(23)

00. 目录 文章目录 00. 目录01. DMA简介02. DMA主要特性03. 存储器映像04. DMA框图05. DMA基本结构06. DMA请求07. 数据宽度与对齐08. 数据转运DMA09. ADC扫描模式DMA10. 附录 01. DMA简介 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、STM32F102xx和STM32F…

Hive11_Rank函数

Rank 1&#xff09;函数说明 RANK() 排序相同时会重复&#xff0c;总数不会变 DENSE_RANK() 排序相同时会重复&#xff0c;总数会减少 ROW_NUMBER() 会根据顺序计算 2&#xff09;数据准备 3&#xff09;需求 计算每门学科成绩排名。 4&#xff09;创建本地 score.txt&…

C语言程序设计——数学运算

基本运算符 运算符说明例子赋值运算符a b;、-、*、/、()基本四则运算a (a c) * d;%取余运算符a b % 2&、^、~、l位运算a ~b l c>>、<<左移和右移a b >> 2 在c语言的数学运算中&#xff0c;所涉及到的符号如图所示&#xff0c;在使用过程中应该了…