Squid 代理服务器

13.1.1缓存代理概述

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

1.代理的工作机制

       当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已 经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机要访问 的页面,则由代理服务器向lnternet发送访问请求,获得返回的Web页面以后,将网页数据保存到缓 存中并发送给客户机,如图13.1所示。

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

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

2.代理的基本类型

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

       

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

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

13.1.2安装及运行控制

下面以Squid 3.5.23版为例,介绍其安装和运行控制。

1.编译安装Squid 配置

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

[root@node01 ~]# mount /dev/cdrom /mnt/
[root@node01 ~]# ftp 172.16.37.13ftp> cd 软件下载/y2/y2c
ftp> get squid-3.5.23.tar.gz

[root@node01 ~]# tar zxf squid-3.5.23.tar.gz 
[root@node01 ~]# cd squid-3.5.23/
[root@node01 squid-3.5.23]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-linux-netfilter --enable-async-io=240 --enable-default-err-language=Simplify_Chinese --disable-poll --enable-epoll --enable-gnuregex
[root@node01 squid-3.5.23]# make
[root@node01 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:错误信息的显示语言。

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

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

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

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

2.Squid 的配置文件

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

[root@node01 ~]# vim /etc/squid.confhttp_port 3128  //用来指定代理服务监听的地址和端口(默认的端口号为3128)cache_effective_user squid //这一项指定squid的程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功!
cache_effective_group squid

添加以下两行内容 

       默认情况下,配置文件中不包括 cache_effective_user 与cache_effective_group 配置项,需要手 动添加。

3.Squid的运行控制

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

[root@node01 ~]# squid -k parse

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

[root@node01 ~]# squid -z  //-z选项用来初始化缓存目录
[root@node01 ~]# squid  //启动squid服务

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

[root@node01 ~]# netstat -anpt | grep "squid"

3)使用Squid服务脚本

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

[root@node01 ~]# 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" instart)netstat -anpt | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "Squid is running"elseecho "正在启动squid..."$CMDfi;;stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -anpt | grep squidelseecho "Squid is not running."fi;;restart)$0 stop &> /dev/nullecho "正在关闭squid..."$0 start &> /dev/nullecho "正在启动squid...";;reload)$CMD -k reconfigure;;check)$CMD -k parse;;*)echo "用法:$0 {start | stop | restart | reload | check | status}";;
esac[root@node01 ~]# chmod +x /etc/init.d/squid 
[root@node01 ~]# chkconfig --add squid
[root@node01 ~]# systemctl restart squid

     

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

 

客户机成功访问网络

 

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

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

相关文章

Udp实现一个小型shell

实现原理 首先我们要有个客户端和一个服务器,客户端向服务器传递命令。而服务器收到命令后创建一个管道,并fork一个子进程。随后子进程解析命令,再把标准输出换成管道文件,因为命令行命令是自动输出到显示器的,所以我…

阿里巴巴中国站1688商品详情API:获取商品详情的指南和最佳实践

阿里巴巴中国站提供了1688商品详情API,允许开发者通过编程方式获取商品详情信息。以下是使用该API的一般步骤: 注册成为阿里巴巴中国站的会员,并登录到开发者中心。在开发者中心中,找到并进入“API管理”页面。在API管理页面中&a…

web前端媒体查询的知识点

相应式布局和媒体查询是不分家的 写在<style></style>标签里面 /*只有在打印机或打印预览的时候才会应用的样式 没有任何的优先级&#xff0c;只有执行顺序的问题*/ media print{ h1{ background:transparent; } } /*只有在屏幕上才应用的样式&#xff0c;…

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构

英飞凌TC3xx之一起认识GTM系列(一)先来认识GTM架构 1 先来认识GTM的通用架构2 概览2.1 架构的简要说明2.2 架构概述1 先来认识GTM的通用架构 GTM系统使用GTM全局时钟fGTM 运行(本文称为SYS_CLK)。 特点如下: GTM模块由两个主要部分组成: 由博世设计的GTM IP v3.1.5.1 …

【Java 数组解析:探索数组的奇妙世界】

数组的引入 我们先通过一段简单的代码引入数组的概念。 import java.util.Scanner; public class TestArray01{public static void main(String[] args){//功能&#xff1a;键盘录入十个学生的成绩&#xff0c;求和&#xff0c;求平均数&#xff1a;//定义一个求和的变量&…

【我与CSDN的128天】相识相知相守

目录: 相识相知相守 相识 为什么选择写博客? 写博客的目的,我觉得是因为想要记录。记录学习的过程,整理学过的知识,方便今后的复习。 更重要的是热爱分享,分享给别人知识也是一种快乐。 在某一瞬间教会某一个你不认识的人,难道不是一个很酷的事情吗? 为什么选择CSDN? 作…

企业签名分发对移动应用开发者有什么影响

企业签名分发是移动应用开发者在应用程序发布前测试、内部分发和特定的受众群体分发等方面比较常用的一种工具。那对于应用商城分发有啥区别&#xff0c;下面简单的探讨一下。 独立分发能力 通过企业签名分发开发者可以自己决定应用程序的发布时间和方式&#xff0c;不用受应用…

[2024区块链开发入门指引] - 比特币运行原理

一份为小白用户准备的免费区块链基础教程 工欲善其事,必先利其器 Web3开发中&#xff0c;各种工具、教程、社区、语言框架.。。。 种类繁多&#xff0c;是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役&#xff1f; 参见另一篇博文&#x1f449; 2024最全面…

Android14之禁掉Selinux的两种方式(一百七十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

uniapp的分包使用记录

UniApp的分包是一种将应用代码划分为多个包的技术。分包的核心思想是将不同部分的代码划分为不同的包&#xff0c;按需加载&#xff0c;从而提高应用性能。使用UniApp的条件编译功能&#xff0c;开发人员可以根据需要将代码划分为多个包。每个包都包含一组页面和组件&#xff0…

大数据Doris(四十五):物化视图选择最优

文章目录 物化视图选择最优 物化视图选择最优 下面详细解释一下第一步最优物化视图是被如何选择出来的。 这里分为两个步骤: 对候选集合进行一个过滤。只要是查询的结果能从物化视图数据计算(取部分行,部分列,或部分行列的聚合)出都可以留在候选集中,过滤完成后候选集合…

Go 正则匹配之跨行匹配

跨行匹配 一般正则匹配默认是按行来进行匹配的&#xff0c;如果要跨行匹配&#xff0c;需要使用 (?s) 来启用多行模式。 package mainimport ("fmt""regexp" )func main() {data : "This is the first line. \nAnd this is the second line."…

RocketMQ源码解析-主从同步原理(HA)

1、关键组件 主从同步的实现逻辑主要在HAService中&#xff0c;在它的构造函数中实例化了几个对象同时在start()方法内执行启动&#xff1a; public class HAService {public HAService(final DefaultMessageStore defaultMessageStore) throws IOException {this.defaultMes…

李宏毅机器学习第二十三周周报 Flow-based model

文章目录 week 23 Flow-based model摘要Abstract一、李宏毅机器学习1.引言2.数学背景2.1Jacobian2.2Determinant2.3Change of Variable Theorem 3.Flow-based Model4.GLOW 二、文献阅读1. 题目2. abstract3. 网络架构3.1 change of variable formula3.2 Coupling layers3.3Prop…

阿里云域名外部入库流程

注册商是阿里云&#xff0c;且在阿里云管理的&#xff0c;请使用此教程外部入库。 如您的域名注册商是阿里云但在聚名管理&#xff0c;请参考教程&#xff1a;https://www.west.cn/faq/list.asp?unid2539 在外部入库操作之前&#xff0c;请先登录阿里云获取账号ID。详细的账…

软件测试方法分类-按照是否手工执行划分

接上一篇,下来我们再细讲,第二个维度的分类, 软件测试方法分类-按照是否手工执行划分 按是否手工执行划分 1,手工测试(manualTesting) 手工测试是由人一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一种。 2,自动化测试(automationTestin…

【刷题日志】深度理解除(/)与取模(%)附水仙花数以及变种水仙花数题解

文章目录 &#x1f680;前言&#x1f680;除与取模&#x1f680;水仙花数&#x1f680;变种水仙花数 &#x1f680;前言 本专栏文章都直奔刷题主题&#xff0c;阿辉都不会在废话了&#xff0c;加油&#xff0c;少年&#xff01;&#xff01;&#xff01; &#x1f680;除与取…

STM32CubeMX教程11 RTC 实时时钟 - 入侵检测和时间戳

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流程 3.2.3、添加其他必要代码 4、常用函数 5、烧录验…

国科大2023.12.28图像处理0854最后一节划重点

国科大图像处理2023速通期末——汇总2017-2019 图像处理 王伟强 作业 课件 资料 第1、2章不考 第3章 空间域图像增强 3.2 基本灰度变换(考过填空) 3.2.1 图像反转 3.2.2 对数变换 3.2.3 幂次变换 3.3 直方图处理 3.3.1 直方图均衡化&#xff08;大题计算&#xff09; …

sklearn.feature_selection.SelectFromModel利用模型筛选特征

sklearn.feature_selection.SelectFromModel模型筛选特征 以随机森林为例&#xff0c;查看随机森林之类的模型使用的特征。有两种使用方式&#xff1a; 1&#xff0c; 使用未训练的模型 from sklearn.feature_selection import SelectFromModel from sklearn.ensemble impor…