linux高级管理——Squid代理

news2024/9/27 4:54:25

一、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端口。
 


 


 


 


 


 


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JumpServer3.0版本-资产管理

资产列表 资产列表可展示资产树和类型树,可以查看添加的所有资产 新增资产也是在此页面 在资产树上面右键可以创建新的子节点 比如这里我新建了个“腾讯云”节点 选中腾讯云节点,点击中间的“创建”按钮,新增资产 选择你的主机类型,我这是Linux 填写你资产的名称、IP必…

复习sql: 内连接,左外连接,右外连接,全外连接,交叉连接

数据表准备 学生表 和 课程表 内连接 join 或 innner join 筛选出满足条件的列,where也可以实现这种功能。 SELECT * FROM student JOIN course ON student.student_id course.stu_id结果 外连接 左外连接 left join 或者 left outer join 以第一个表为基础&…

爬虫-3-模拟登录,代理ip,json模块

#本文仅供学习使用(O`) 如果服务器响应的数据为json数据: 那么我们可以用 res.json() 或 json模块(将json字符串转换为Python里面的字典类型) 接收数据。

商家如何通过会员充值消费管理系统提升业务运营与用户体验

在当今数字化商业环境中,会员充值消费管理系统已经成为各类商家提高客户粘性、优化服务流程、增强市场竞争力的重要工具。那么如何通过会员充值消费管理系统提升业务运营与用户体验,商家是否有所了解呢?下面就带大家简单了解。 首先&#xf…

计算机网络 综合(习题)

【计算机网络习题】系列文章目录 计算机网络 第一章 绪论(习题) 计算机网络 第二章 计算机网络体系结构(习题) 计算机网络 第三章 应用层(习题) 计算机网络 第四章 运输层(习题) 计算机网络 第五章 网络层(习题) 计算机网络 第六章 数据链路层(习题) 计算机网络 第七章 物…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)添加 删除 修改 释放

在上篇文章(处理任务队列中的任务)中我们讲解了处理任务队列中的任务的具体流程,eventLoopProcessTask函数的作用: 处理队列中的任务,需要遍历链表并根据type进行对应处理,也就是处理dispatcher中的任务。 // 处理任…

Hystrix熔断/断路器

简介 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故…

Kubernetes复习总结(二):Kubernetes容器网络

2、Kubernetes容器网络 1)、Docker网络原理 Docker默认使用的网络模型是bridge,这里只讲bridge网络模型 1)容器之间通信原理 当安装完docker之后,docker会在宿主机上创建一个名叫docker0的网桥,默认IP是172.17.0.1…

【DevOps-05】Integrate工具

一、简要说明 持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。 Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。 Jenkins需要大量的插件保证工作,安装成本较高,下面会基于Docker搭建Jenkins。 二、Jenk…

Opencv与PyQt5设计一个摄像头界面

一、前言 本篇的内容是学习的这一位博主的:程序界面设计_Doc_Cheng的博客-CSDN博客。 这是我见过很详细的教你如何使用的PyQt5来完成UI界面设计的,专注于UI界面设计。对我而言,这教程就像是一个实用工具,因为我只需要能够显示图…

K8S Prometheus-rocketmq-exporter配置

下载rocketmq-exporter 通过Docker仓库下载 docker pull sawyerlan/rocketmq-exporter:latest 然后打标签,推送到自己的仓库 也可通过代码自己build镜像 git clone GitHub - apache/rocketmq-exporter: Apache RocketMQ Prometheus Exporter 然后打标签&#x…

Java数组:一维数组、二维数组、Arrays

文章目录 1、一维数组1.1 数组概念1.2 数组的声明1.3 数组的静态初始化1.4 数组的动态初始化1.5 地址值1.6 数组元素访问1.7 索引1.8 数组的遍历1.9 数组两种初始化方式的区别 2、二维数组2.1 二维数组的声明2.2 二维数组的静态初始化2.3 二维数组的动态初始化2.4 二维数组的遍…

使用metricbeat 监控多ES集群

背景 ES 本身自带 监控,属于xpack 中的内容,为商业版,需要收费; 并且 monitor 功能必须要在security开启后才能使用,还有就是集群监控自己,将采集到的性能数据保存到本集群,这是一个比较差的设…

OpenHarmony从入门到放弃(一)

OpenHarmony从入门到放弃(二) 一、OpenHarmony的基本概念和特性 OpenHarmony是由开放原子开源基金会孵化及运营的开源项目,其目标是构建一个面向全场景、全连接、全智能的时代的智能终端设备操作系统。 分布式架构 OpenHarmony采用分布式…

代码随想录算法训练营第二十一天| 回溯 216. 组合总和 III 17. 电话号码的字母组合

216. 组合总和 III 可以参考77.组合中关于选取数组的相关操作。 递归函数的返回值以及参数:一般为void类型 递归函数终止条件:path这个数组的大小如果达到k,说明我们找到了一个子集大小为k的组合了,然后当n为0的时候&#xff0…

RabbitMQ高级

文章目录 一.消息可靠性1.生产者消息确认2.消息持久化3.消费者确认4.消费者失败重试 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如…

AI教我学编程之C#关键字

AI教我学编程系列学习第三课 — C#关键字 前言重点先知关键字分类保留字上下文关键字 对话AI首遇波澜调整指令第一次第二次第三次直到我提出如下指令 人工智能?阶段总结 知识拓展1、Ecma和ISO是什么?2、System,dllhost.exe,taskmg…

服务器磁盘挂载及格式化

一边学习,一边总结,一边分享! 写在前面 最近一直折腾组装的电脑,来回折腾了很久关于我花费六千多组了台window+Linux主机,目前基本是可以使用了。对于Windows主机配置基本是没问题,一直在使用,以及桌面化软件,都可以自己安装,只是说这台主机有些软件可能一时半会安装…

《数字图像处理》课程设计

第1题:感兴趣目标提取 主要内容: 对输入的自然图像进行感兴趣目标提取,给出所有10副图的结果(图像教师提供)。 参考步骤: 对图像进行初始分割,可选择的初始分割方法包括分水岭方法&#xff0…

Unity中Shader面片一直面向摄像机(个性化修改及适配BRP)

文章目录 前言一、个性化修改面向摄像机效果1、把上一篇文章中求的 Z轴基向量 投影到 XoZ平面上2、其余步骤和之前的一致3、在属性面板定义一个变量,控制面片面向摄像机的类型4、效果 二、适配BRP三、最终代码 前言 在上一篇文章中,我们用Shader实现了面…