精华内容
下载资源
问答
  • 代理服务包括哪些内容
    千次阅读
    2018-03-16 10:18:42

    WEB服务器的实现包含哪些内容

    本文根据自己的经验,整理实现一个WEB服务器可能包含的内容,每一项都点到为止,不做过多展开。以下顺序无重要程度区分,皆按实际场景考虑是否需要。

    路由

    WEB服务器的路由,本质上是根据HTTP请求携带信息,决定执行何种逻辑。

    最简单的if-else语句,也是一种路由方式:

    // 路由依据通常使用请求method和url
    if (method === 'GET' && url === '/robots.txt') {
        // do something
    }
    else {
        // do other things
    }

    不同平台不同框架,路由定义的方式会有差异,但本质相同:通过HTTP请求所携带的信息,决定不同的执行逻辑。拿Node.js下Express举例:

    const express = require('express');
    const app = express();
    
    // GET:/home will match funcA
    app.get('/home', funcA);
    
    // POST:/home will match funcB
    app.post('/home', funcB);
    
    // GET:/params/a or GET:/params/b will be match funcC
    app.get('/params/:id', funcC); 
    
    // GET:/regexp/list-1.html or GET:/regexp/list-2.html will be match funcD
    app.get('/regexp/list-[0-9].html', funcD); 

    以上代码就是Node.js + Express的一种简单路由定义方式,但在真实场景下不推荐这样一行一行添加路由的写法,尽量做到按类型、业务拆分定义,也可以抽成独立于语言框架的一种配置项。

    日志

    日志用来记录跟请求相关的信息,经常作为数据统计,问题定位等用途,可分为以下几种:

    • 访问日志

    访问日志是最常见的基础日志,记录每一个request的部分请求信息和响应信息,通常会记录的信息有请求者IP、请求方式、请求URL、请求主体大小、请求Host、请求处理时长、响应状态码、响应主体大小等,这些日志信息可用做访问统计、问题定位等

    • 业务日志

    业务日志的内容,根据业务需要输出,可用于业务统计、追踪、问题定位等

    • 错误日志

    请求处理过程中发生错误、异常,只要能被捕捉,都应该输出到错误日志中,并且包含尽量多的上下文信息,方便开发人员定位BUG

    会话保持

    HTTP是一种无状态协议,但在某些业务场景下,需要保持会话信息,即请求需要跟踪并唯一标识请求者。

    现代WEB服务器都能实现会话保持功能,实现原理并不难,保证每一个请求都包含本次处理所需要的所有信息上下文即可。实现原理:

    • 初次请求时,服务器为本次请求分配一个唯一ID(SessionId)以及与之对应的会话信息(Session),然后在响应中包含该ID
    • 客户端收到响应时,存储所获得的ID(Cookie),以后每一个请求都带上该ID
    • 后续请求时,服务器取出请求所携带的ID以及根据ID获取对应的会话信息,即完成了会话追踪

    这个ID的承载体通常是一个HTTP头部,在浏览器中分别为Set-Cookie、Cookie,前者在响应时使用,后者在请求时使用。同时浏览器针对Set-Cookie还有很多其它特性,如:过期时间,作用范围(域名、路径),协议(HTTP、HTTPS)等

    有一个常见的面试题:Cookie与Session的区别。以下是我的理解:

    • Cookie是网站在浏览器中存储数据的一种方式,服务器通过Set-Cookie头部在浏览器中存储信息,浏览器通过Cookie请求头部携带所存储的信息给服务器,被存储的这份信息称为Cookie
    • Session可以指一次请求所对应的会话,是一种抽象概念,也可以指会话所对应的信息上下文本身,存储在服务器端

    Session通常是与SessionId一一对应,SessionId的传输依靠Set-Cookie/Cookie头部,SessionId对应的数据可以存放在内存或数据库中,前者难以跨进程共享故不推荐,后者因为读写高频经常选用Redis。

    缓存

    系统不同的部分或层级,获取数据的资源开销和速度经常会有显著差异,为追求更高的性能与更快的速度,于是就有了缓存这个概念,在很多应用场景下,使用缓存都可以显著提升系统整体性能。

    跟HTTP相关的缓存,常出现的地方有:

    • 客户端

    客户端,通常也就是浏览器,会根据一系列HTTP缓存规则去进行资源缓存,当资源命中缓存时,其获取速度是最快的,具体缓存策略参考HTTP缓存策略

    • 中间代理

    请求在客户端没有命中缓存时,会向服务器发送请求,但有可能经过不同的HTTP代理,有些HTTP代理实现了缓存功能,甚至有些专门用作缓存的HTTP代理。缓存代理在缓存未过期的情况下,不会去真实请求服务器资源,而是使用本地命中的缓存响应客户端,用于提升资源获取速度,同时减少网络负载

    • 反向代理

    反向代理,是现代WEB服务器架构中常见的一个名词,代理真实服务器与客户端进行通信。在反向代理服务器上通常会有缓存功能,减少真实服务器的负载,提供更高性能、更快速的资源访问能力

    版本控制

    版本控制,在这是指API的版本控制,一旦生产环境投入使用,在后续的版本迭代过程中,相同接口如果要修改,改变输入或输出。由于依赖服务器的客户端难以保持同步更新,新接口部署时还需同时保持旧接口可用,可以有两种方式:

    • 在同一接口中支持新、旧两种使用场景

    如果接口的性质、输入、输出都没有变化,只是内部实现的更新,则此方式可取。但如果因输入、输出变化,也在原有的老接口中揉合进新接口的功能代码,会导致代码难以阅读和维护,不推荐

    • 重新定义一个接口,用以支持新场景

    重新定义接口,支持新场景,原有接口不改变,此方式即接口的版本控制,在约束和规范下定义并实现新的接口,旧接口确认不再使用或不再兼容之后,从系统中移除。

    接口的版本控制虽非必需,但不表示不重要的,能够在系统设计之初考虑进去最好不过,具体如何实现版本控制,即如何确定约束和规范则因人而异,没有必然正确的标准。

    访问控制

    如果某些敏感资源,只有特定的访问者可以访问,就需要做访问控制,比如:内部系统不允许外部调用,用户资源需要登陆后才可以获取,管理系统需要管理员登陆才可访问,屏蔽某些已知的恶意IP访问等

    针对以上场景,可能采用的方式有:

    • 黑白名单

    允许或屏蔽特定用户访问,该方式比较僵硬,但在某些情况下却非常高效和便捷

    • 验证码

    有各种各样的验证码形式,但主要目的都是为了区别对待机器与人

    • 用户登陆

    依靠用户登陆,识别用户身份,控制访问权限

    单点调用频率限制

    单点调用频率限制也是访问控制的一部分,有特殊性,也经常被忽视。单点调用频率限制,最终常会转变成识别机器与人,因为真人的正常操作往往难以达到调用频率限制门槛。

    需要考虑单点调用频率限制的因素:

    • 资源成本较高

    需要消耗过多计算机资源(CPU、IO、磁盘等)、过多带宽、额外成本(短信验证码,其它收费服务等)等,API如果具有以上特性,那么为避免因非法使用而导致系统成本浪费,在技术上就需要尽可能的去防范

    • 维持公平性

    在某些特定业务场景下,如限量抢购、投票等场景,为了维持公平性,可能需要加以限制单点调用频率

    统一响应格式

    统一响应格式主要指业务API的返回值,HTTP的标准状态码是一种方式,但并不推荐在业务场景中直接使用。现代服务器API大多使用JSON作为数据交换格式,如果再套用HTTP标准状态码,会使得前端逻辑处理异常繁琐。

    例如根据文章ID获取文章,当文章ID对应的文章不存在,如果采用HTTP标准状态码,此时响应码应为404, 原因短语为Not Found,因为接口本身设计成JSON的返回值,返回404状态码会导致前端无法进入正常处理逻辑,需要额外逻辑去理解响应,并友好提示用户。

    统一API的响应格式,可使用以下简单结构:

    response = {
        code: number, // 0 表示成功,其它表示失败
        msg: string,  // 描述信息,code非0时表示错误描述
        result: var    // 成功时的响应数据,用于业务处理
    };

    所有能捕捉的异常,都可以包装成上面的结构返回,Content-Type: application/json。

    对等

    服务器实例部署需要保持对等,便于水平扩展,可分为两种:单机多进程、多机多进程。单机多进程,解决对单机的依赖(本地文件、本机网络资源、本机独有服务等),就可以转为多机多进程部署。

    负载均衡

    如果服务器实例实现了对等部署,也就是同一个服务,有多个实例在运行,通常在前面会存在一个负载均衡服务器,它会考虑到多个不同服务实例的负载情况,给它们带去不同数量的请求。可把负载均衡理解成另一个层次的路由。

    反向代理

    反向代理服务器是隐藏真实服务器相关信息,代理真实服务器与客户端打交道,同时可以集成其它功能的角色。出色代表:Nginx,性能稳定可靠,包含大部分非业务相关特性,如缓存、访问日志、负载均衡、路由转发等。

    总结

    一个现代WEB服务器,不一定包含上述所有内容,同时也不限于上述内容。上述每一项,都是根据自己的理解,简单描述一遍,不涉及具体实现与技术细节,因为每一项内容展开,都有太多太多内容。后续针对其中某些内容,再单独写文章进行更详细和深入的介绍。

    博客原文

    更多相关内容
  • 代理服务器

    千次阅读 2021-02-07 10:42:20
    代理服务器作为连接Internet与Intranet的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性、缓存、内容过滤、访问控制管理等功能。更重要的是,代理服务器是...

    代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记

    代理服务器作为连接Internet与Intranet的桥梁,在实际应用中发挥着极其重要的作用,它可用于多个目的,最基本的功能是连接,此外还包括安全性、缓存、内容过滤、访问控制管理等功能。更重要的是,代理服务器是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的会话层。可以充当防火墙、节省IP开销等。

    简介

    随着Internet与Intranet的飞速发展,作为连接Internet与Intranet的的桥梁,代理服务器在实际应用中发挥着极其重要的作用。

    代理服务器是网络信息的中转站。一般情况下,使用网络浏览器直接去链接其它Internet站点并取得网络信息时,须送出请求信号来得到应答,然后对方再把信息传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,请求信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好像一个大的Cache,它不断将新取得数据包存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

    代理服务器不仅可以实现提高浏览速度和效率的功能,它还可以实现网络的安全过滤、流量控制(减少Internet使用费用)、用户管理等功能,因此它既是一种网络防火墙技术,同时也可以解决许多单位连接Internet引起IP地址不足的问题。

    工作原理

    代理服务器作为一种既是服务器又是客户机的中间程序,主要用于转发客户系统的网络访问请求。但是,代理服务器不只是简单地向真正的因特网服务器转发请求,它还可以控制用户的行为,对接收到的客户请求进行决策,并根据过滤规则对用户请求进行过滤。

    通过代理服务器,网络管理员可以实现比用包过滤路由器更严格的安全策略。不同于使用通用的包过滤路由器来管理通过防火墙的因特网服务流向,代理服务器通过在网关上为每项需要的应用安装专用的代码(代理服务)来工作。如果网络管理员没有为某一特殊服务安装代理服务代码,该服务就不会被支持,也不会通过防火墙转发相应的客户请求。并且,这种代理服务器码能被配置成仅支持某项服务的网络管理员认为可以接受的那部分特征,而不支持其他的特征。

    主要功能

    代理服务器具有许多功能。对于我们个人用户而言,通过代理上网,能让我们访问一些直接访问会比较慢的网站,比如互联网用户访问教育网的网站。对于单位而言,内部使用代理可以预先过滤一些病毒,保障上网的安全,还能有效地进行访问控制、网速限制,上网监控等等。

    以下介绍代理服务器的基本功能:

    (1)一个lP地址或Internet帐户供多个用户同时使用

    在目前情况下,IP地址是Internet中有限的宝贵资源,如果将这些IP地址仅仅用于单个的请求Internet访问的用户,不能不说是一种资源浪费。使用代理服务器可以做到通过一个IP同时向多个用户提供Internet的访问,对于通过电话拨号连通Internet的内部网络,则可以实现利用一条电话线,一个modem和一个Internet帐户,让内部网络上所有用户同时访问Internet,这样就充分利用了IP地址资源。

    (2)缓存功能,可以降低费用,提高速度

    安装时,代理服务器会在硬盘上开出一块磁盘空间作为缓存区,将代理用户从Internet上接收的内容下载一份保存起来,当再有用户访问同样内容时,就直接从缓存区传送给用户,而不再从Internet上寻找。代理服务器的这项功能可以大大地提高访问速度,同时也降低了通信费用,是一项相当重要的功能。

    (3)对内部网络用户进行权限和信息流量计费管理

    图1 代理服务器

    图1 代理服务器

    通过代理服务器,网管员在提供Internet服务时,可以容易地对内部网络用户进行访问权限和信息流量计费的管理。网管员不但能够做到只允许被授权的局域网用户访问Internet,还能够控制这些用户在哪些时间、使用哪台计算机访问哪些类型的Internet服务。对于已经获准访问的Internet的用户,网管员还能够按照多种方式进行信息流量的计费管理,如:按照个人计费、按照部门所属计算机计费等,为网络管理带来了极大的方便。

    (4)对进入内部网络的Internet信息实施监控和过滤

    为了避免那些与业务无关的信息进入内部网络浪费通信资费,各个机构对允许访问的内容往往有一些相应的规定。通过代理服务器,网管员不但可以采取过滤的方法简便地控制从Internet流入内部网络的信息内容,还能对用户访问Internet的情况进行实时监控和建立监查日志存档备查。

    主要分类

    通过代理服务器共享上网从技术实现角度来说可以分为硬件共享上网和软件共享上网两种方式,从代理服务器工作的层次的角度来说可以分为应用层代理、传输层代理和SOCKS代理

    图2 代理服务器实现模型

    图2 代理服务器实现模型

    应用层代理工作在TCP/IP模型的应用层之上,它只能用于支持代理的应用层协议(如HTTP,FTP)。它提供的控制最多,但是不灵活,必须要有相应的协议支持。如果协议不支持图2所示的代理服务器实现模型(如SMTP和POP),那就只能在应用层以下代理,也即传输层代理。最后一种代理需要改变客户端的IP栈,即SOCKS代理。它是可用的最强大、最灵活的代理标准协议。以下将从代理服务器工作的层次的分类角度上介绍几种不同层次的代理服务器。

    应用层代理

    这里主要介绍基于HTTP协议的代理服务器。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。根据HTTP协议规定,当客户端使用代理模式时,发送的请求命令格式如下:methodhttp://hostname/path/⋯/fiIename。

    图3 带有Cache数据库的HTTP协议代理模型

    图3 带有Cache数据库的HTTP协议代理模型

    当客户端同网络代理服务系统建立连接后,代理服务器将收到请求命令,这时代理服务器应该截取主机名部分进行域名解析,并同该主机建立连接,将去掉主机名部分的请求命令转发给它,等待它做出响应,然后将得到的响应转发给客户端,最后断开连接。其模型如图3所示。

    传输层代理

    传输层代理直接与传输层交互,更加灵活。要求代理服务器具有部分真正服务器的功能:监听特定TCP或UDP端口,接收客户端的请求同时向客户端发出相应的响应。

    socks代理

    Socks(防火墙安全会话转换协议 (Socks: Protocol for sessions traversal across firewall securely))是一个客户/服务器环境的代理协议。它包括两个主要的组件,Socks服务器和Socks客户库Socks服务器实现在应用层,Socks客户库实现在客户的应用层与传输层之间。一个代理服务器为客户机与应用服务器建立连接,代理服务器在客户与应用服务器之间中转数据,从应用服务器的角度来看,代理服务器是客户。

    当客户想建立到应用服务器的连接时,先连接到代理服务器。应用服务器的地址和端口号通过代理协议被传递到代理服务器,然后,代理服务器再连接到应用服务器。一旦到应用服务器的连接被建立,代理服务器在客户与应用服务器之间中转数据。

    目前,有两个版本的Socks协议,版本4和版本5。Socks版本4被简写为“Socks V4”,Socks版本5被简写为“Socks V5”。

    网络影响

    随着Internet的应用越来越广,Internet各项服务的安全问题也越来越突出,提供一个安全的网络环境也就变得日益重要。一般可以从两个方面实现Internet安全服务:

    (1)访问控制,访问控制是保护网络的第一道防线,一般由防火墙实现。

    (2)通信安全,此种服务提供对数据加密、在通信对方认证、双方无法抵赖、数据在传输过程中的完整性等服务,可以在应用层、传输层、网络层实现。

    Internet上的代理服务是防火墙的一种形式,属于应用级网关,内部网络与外部网络之间没有直接的连接,外部计算机的网络链路只能到达代理服务器,明显地增加了网络的安全性,另外,代理服务器相对于包过滤来讲,能进行用户级的认证,即可以限制某些用户访问某些Internet站点或使用某种Internet服务等,从而大大提高了网络的安全性。

    代理服务器架构

    代理服务器架构

    然而代理服务器的广泛应用,也使它成为网络攻击的重点目标。目前的代理服务器并不能为用户提供可靠的安全性,甚至无法保障其自身的安全,所以研究并提高代理服务器的安全备受关注。

    展开全文
  • 关于代理服务器的原理及用法

    千次阅读 2021-11-12 16:44:54
    关于代理服务器的原理及用法 一,什么是代理服务器(Proxy)? 答:以类似代理人的身份去取的用户需要的数据。由于它的【代理】能力,使得我们可以透过代理服务器来达成防火墙与用户数据的分析。除此之外我们还可以...

    关于代理服务器的原理及用法

    一,什么是代理服务器(Proxy)?

    答:以类似代理人的身份去取的用户需要的数据。由于它的【代理】能力,使得我们可以透过代理服务器来达成防火墙与用户数据的分析。除此之外我们还可以借助代理服务器来达成节省带宽的目的,以及加快内部网络对因特网的万维网的访问速度。 当客户端有因特网的数据要求时,Proxy会帮用户去向目的地取得用户所需要的数据。所以当客户端指定www的代理服务器之后,用户的所有www相关要求就会通过代理服务器去捉取。代理服务器会架设在整个区网的单点对外防火墙上头,而在区网内部的计算机都是通过Proxy来向英特网要求数据的,这就是所谓的【代理服务器】
        关于代理服务器,客户端与因特网的相关性示意图如下:
          img

    上面的架构仅仅是其中一个案例,架构的采用率比较高,因为这样的Proxy server不仅可以充当代理服务器的角色,还可以当做高阶防火墙。
    客户端向外部要求的数据事实上都是Proxy帮用户取得的,因此因特网上面看到要求数据者,将会是Proxy服务器的IP而不是客户端的IP。Proxy Server因为直接对外网,相当于当了个炮灰,外网只能找到这个代理服务器,隐藏内网的机器,从而起到防火墙的作用。

    二,代理服务器原理【Proxy Serve】:
      代理服务器就类似代理商,如图,假设你的机器为A机,你想获得的数据由B机提供,代理服务器为C机,那么具体的连接过程是这样的:

    img

    首先,A机需要B机的数据,它与C机建立连接,C机接收到A机的数据请求后,与B机建立连接,下载A机所请求的B机上的数据到本地,再将此数据发送至A机,完成代理访问服务。

    ​ 相比着上图的运行流程,代理服务器本身还具备缓存的能力,能够存储从internet网上取回的数据,方便用户再次请求时,能从代理服务器缓存中快速取出返回。代理服务器的运作流程如下:
    img

    cache的存在,可以做假象的web加速;

    当Proxy的快取拥有用户所想要的数据时:

    a. Client端向Server端发送一个数据需求封包

    b. Server端接收之后,先比对这个封包的【来源】与预计要前往的【目标】网站是否为可接受?如果来源和目标都是合法的,或者说,来源与目标网站我们的Proxy都能帮忙取得资料时,那么   Server端会开始替Client取得资料。取得资料中比较重要的政策就是【比对政策】,有点像认证的感觉。

    c. 对比政策,Server对先检查自己的快取(新的数据可能在内存中,比较旧的数据放在硬盘中)数据,如果有Client所需要的数据,那么将数据准备取出,而不经过向Internet要求数据的程序。

    d. 最后当然就是将数据回传给Client
    Proxy对于cache的速度是很有要求的,而这个cache就是硬盘了。硬盘的容量必须足够大,而且还要【足够快】才行!cache是一直被重复存取的地方。所以硬盘的好坏就差别大了。

    三、代理服务器的优点:

    * **突破自身IP访问限制:**访问国外站点或者其他之前不能访问的站点。
    * 提高访问速度:通常代理服务器都设置了一个较大的硬盘缓冲区,当有外界的信息通过的时候,同时也将其保存在缓冲区中,当其他用户在访问相同的信息时,则直接有缓冲区取出信息,传给用户,以提高访问速度
    * 链接内网与Internet,充当防火墙:因为所有的内部网用户通过代理服务器访问外界时,只映射一个IP地址,所以外界不能直接访问到内部网;同时可以设置IP地址过滤,限制内部网对外部的访问权限
    * 隐藏真实IP:上网者可以通过这种方式隐藏自己的IP,以免受到攻击;
    * 设置用户验证和记账功能,没有登记的用户无权通过代理服务器访问Internet网。并对用户的访问时间、访问地点、信息流量进行统计。

    四,代理服务器的分类:

    1、HTTP 代理按匿名功能分类(是否具有隐藏 IP 的功能)。
    非匿名代理:不具有匿名功能。
    匿名代理。使用此种代理时,虽然被访问的网站不能知道你的 IP 地址,但仍然可 以知道你在使用代理,有些侦测 IP 的网页也仍然可以查到你的 IP。
    高度匿名代理:使用此种代理时,被访问的网站不知道你的 IP 地址,也不知道你在使用代理进行访问。此种代理的隐藏 IP 地址的功能最强。

    2、按请求信息的安全性分类
    全匿名代理:不改变你的 request fields(报文),使服务器端看来就像有个真正的客户浏览器在访问它。当然,你的真实 IP 是隐藏起来的。服务器的网管不会认为
    你使用了代理。
    普通匿名代理:能隐藏你的真实 IP,但会更改你的 request fields,有可能会被认为使用了代理,但仅仅是可能,一般说来是没问题的。不过不要受它的名字的误导,
    其安全性可能比全匿名代理更高,有的代理会剥离你的部分信息(就好比防火墙的
    stealth mode),使服务器端探测不到你的操作系统版本和浏览器版本。
      elite 代理:匿名隐藏性更高,可隐藏系统及浏览器资料信息等。此种代理安全性特强。
      透明代理(简单代理):透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的 request fields(报文),并会传送真实 IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了,例如 Garden 2 程序。

    3、按代理服务器的用途分类
    1)Http 代理:代理客户机的 http 访问,主要代理浏览器访问网页,它的端口一般为 80、8080、3128 等。
    2)SSL 代理:支持最高 128 位加密强度的 http 代理,可以作为访问加密网站的代理。加密网站是指以 https://开始的网站。ssl 的标准端口为 443。
    3)HTTP CONNECT 代理:允许用户建立 TCP 连接到任何端口的代理服务器,这种代理不仅可用于 HTTP,还包括 FTP、IRC、RM 流服务等。
    4)FTP 代理:代理客户机上的 ftp 软件访问 ftp 服务器,其端口一般为 21、2121。
    5)POP3 代理:代理客户机上的邮件软件用 pop3 方式收邮件,其端口一般为 110。
    6)Telnet 代理:能够代理通信机的 telnet,用于远程控制,入侵时经常使用。其端口一般为 23。
    7)Socks 代理:是全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括 http、ftp 请求及其它类型的请求。它分socks 4 和 socks 5 两种类型,socks 4 只支持 TCP 协议而 socks 5 支持 TCP/UDP 协议,还支持各种身份验证机制等协议。其标准端口为 1080。

    socks 代理相应的采用 socks 协议的代理服务器就是 SOCKS 服务器,是一种通用的代理服务器。Socks 是个电路级的底层网关,是 DavidKoblas 在 1990 年开发的,此后就一直作为 Internet RFC 标准的开放标准。Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如 FTP、HTTP 和 NNTP 请求)。所以,Socks 代理比其他应用层代理要快得多。它通常绑定在代理服务器的 1080 端口上。如果您在企业网或校园网上,需要透过防火墙或通过代理服务器访问 Internet 就可能需要使用SOCKS。一般情况下,对于拨号上网用户都不需要使用它。注意,浏览网页时常用的代理服务器通常是专门的 http 代理,它和 SOCKS 是不同的。因此,您能浏览网页不等于您一定可以通过 SOCKS 访问 Internet。 常用的防火墙,或代理软件都支持 SOCKS,但需要其管理员打开这一功能。如果您不确信您是否需要 SOCKS 或是否有 SOCKS 可用,请与您的网络管理员联系。为了使用 socks,您需要了解一下内容:
      ① SOCKS 服务器的 IP 地址
      ② SOCKS 服务所在的端口
      ③ 这个 SOCKS 服务是否需要用户认证?如果需要,您要向您的网络管理员申请一个用户和口令知道了上述信息,您就可以把这些信息填入“网络配置”中,或者在第一次登记时填入,您就可以使用 socks 代理了。
        在实际应用中 SOCKS 代理可以用作为:电子邮件、新闻组软件、网络传呼 ICQ、网络聊天 MIRC 和使用代理服务器上联众打游戏等等各种游戏应用软件当中。

    8)TUNNEL 代理:经 HTTPTunnet 程序转换的数据包封装成 http 请求(Request)来穿透防火墙,允许利用 HTTP 服务器做任何 TCP 可以做的事情,功能相当于 Socks5。
     9)文献代理:可以用来查询数据库的代理,通过这些代理,可以获得互联网的相关科研学术的数据库资源,例如查询 Sciencedirect 网站(简称 SD)、Academic Press、IEEE,SPRINGER 等数据库。
    10)教育网代理:指学术教育机构局域网通过特定的代理服务器可使无出国权限或无访问某 IP 段权限的计算机访问相关资源。
    11)跳板代理:应用于跳板程序,可以看作一种具有动态加密的特殊 socks5 代理,也可直接用于 PSD 软件。其端口一般为 1813。
    12)Ssso 代理:代理客户机上的 ssso 程序访问远程网站,具有 SSL 加密强度的超级代理,支持 socks。
    13)Flat 代理:代理客户机上的 flatsurfer 程序访问远程网站,具有高强度加密数据流的特殊代理,支持 socks,最大可设置三次级联,可以设置穿越代理。其端口一般为 6700。
    14)SoftE 代理:代理客户机上的 SoftEther 程序访问远程网站,应用虚拟集线器HUB 和虚拟网卡技术,具备 VPN 功能及多种认证方式的代理,符合 https 协议。

    五、如何设置代理服务器?

    那么究竟怎样才可以用这些 Proxy 呢?其实很简单, 大部分软件都有一些软件属性的选项,比如“Setting”和“Preferences”等等。而在这些选项里面通常会有“Proxy”这个选项,你只需要在“Proxy”选项里面填上你搜索出来的 Proxy 的 IP 的端口, 那么就可以使用这个 Proxy 了。 如果软件是中文的话那么就更加简单, 只要在“设置代理服务器”里面填上就 ok 了。

    浏览器以 IE6 为例:
    1、 打开“工具”里面的“Internet 选项”。
    2、 点选“连接”框。
    3、 如果你使用拨号上网的话,那么选择“设置”。如果你是使用局域网的话,那么选择“局域网设置”。
       在里面就有“代理服务器”这个设置。先点击“使用代理服务器”,然后在“地址”上填上 Proxy 的 IP,在“端口”填上端口,好了!大功告成!

    Mac电脑以设置HTTP代理为例:

    1、在桌面底部打开系统偏好设置

    img

    2. 如果桌面底部没有该按钮,可以在Launchpad中找到他

    img

    3. 打开后的界面如下

    img

    4. 此时我们点击上图中红框部分,打开网络设置功能

    img

    5. 点击右下角的高级,进入高级设置
    img
      并点击代理 ---- 自动发现代理配置,最后将 代理地址填入箭头所指位置,点击好----应用即可

    macOS 终端设置http和https代理:

    1、运行命令 vim ~/.bashrc , 写入如下内容

    export http_proxy="http://localhost:1087" 
    export https_proxy="http://localhost:1087"
    export all_proxy="http:127.0.0.1:1087" #not used now,set proxy of all protocols
    

    1087为本地http代理端口,可能会有所偏差,需要查询代理配置
      2、运行命令 vim ~/.bash_profile,写入如下内容

    source ~/.bashrc
    

    3、重启终端,运行命令curl ip.gs显示当前ip和所属地区查看是否代理成功

    img

    六,关于二级级联

    对于在教育网和科技网内的朋友,直接从国外下载需要支付高额流量费,或机器不能直接连出国,所以要使用国外的代理,还得先学会用二级代理。有一点需要注意的是:并不是所有的代理都能用作一级代理,只有支持 SSL 的 HTTP 代理才行。
      二次代理就是两个代理的级联,有很多 Proxy Server 本来就支持级联,如Winproxy、 Wingate, 这里只讨论如何使用代理。 要用到的一些软件: Sockscap、 Httport、MProxy,这几个软件在网上都能很方便的找到。代理级联一般有 http 代理和 socks 代理为基础来进行,常用代理级联大概有以下

    几种方式:
    (一)、http 代理之间的级联
      http 代理级联可以有多种方式来实现,我说说简单的两种吧。最简单的方法就是使用 Mproxy,它支持三级 http 代理级联,支持输入前两级代理的地址和端口即可,然后就可以使用本地 127.0.0.1:888 作为代理来访问,不过这个方法的缺陷就是不支持http 代理的认证,不能使用需要认证 http 代理。

    另外一种方法使用 Httport,其实这个代理功能很强大,现在只是用来 http 代理间的级联,打开 Httport,在 proxy 页输入第一级 http 代理的地址和端口,如果需要认证就选择上认证,输入用户名和密码,然后到 port mapping 页,点击 Add 按钮,在列表中出现 New mapping,然后在 RemoteHost 里输入第二级 http 代理的地址,Remoteport 里输入第二级 http 代理的端口,local port 里输入本地监听的端口,如 3128、8080 等端口,在 Proxy 页点 start 按钮后就可以使用本地 127.0.0.1:3128 作为代理来访问了,需要注意的是第一级 http 代理必须支持 ssl 连接,否则不能级联第二级 http
    代理。
      所谓 SSL,是指 Secure Sockets Layer,是由 Netscape 公司开发的一套 Internet数据安全协议,当前版本为 3.0。它已被广泛地用于 Web 浏览器与服务器之间的身份认证和加密数据传输。需要说明的是,虽然你浏览的内容是加密的,不过连接站点在代理服务器上边的是可见的。另外,站点的 URL 和 IP 在代理服务器上仍然是可见的。找 SSL的代理很简单,可以使用 AATools 之类的软件,也可以直接用 FLASHGAT 来验证。需要补充一点的就是,上面的二次代理可以供别人使用,因为是在本地所有 ip 上进行监听的,如在你的机器 ip 是 10.9.1.11,本地端口是 888,别人能访问10.9.0.11:888 作为二次代理使用,这样你就可以与别人共享你的二次代理了,这里介绍的 Mproxy 不是 Multiproxy,Multiproxy 是做代理验证和调度用的。

    (二)、socks 代理之间的级联
      socks 代理级联也有几种方式,常用的方法是使用 sockscap 来实现,在 sockscap的 Setting 对话框中输入 socks 代理地址、端口,如是 socks5 还有用户和密码,然后加入可使用 socks 代理的软件(FREE 的 SOCKS 更好了!!),如 IE,在 Internet 选项里 socks 里设置二级 socks 代理的地址和端口,在 sockscap 里运行 IE 就可以使用上二次 socks 代理了,像其他的 Flashfxp、Sterm 和 Leapftp 里也一样,在这些软件上设置二级 socks 代理,然后在 sockscap 里运行就可以使用二次 socks 代理了;另外也可以使用 SkSockServer 来实现,这个软件支持 256 级 socks 代理的级联,本身也可以作为socks proxy server 来使用,跟 mproxy 差不多,只要加入各级 socks 代理地址和端口即可,另外 sockschain 也是做 socks 级联的工具。

    (三)、http 代理和其他代理的级联
      http 代理跟别的代理级联,这里用的是上面提到的 httport,注意第一级 http 代理一定要求 ssl 连接(一定是 SSL 的代理呀,否则不行的!!),在 proxy 页输入 http代理的地址和端口,然后在 port mapping 页加入其他要级联的代理,如 telnet 代理,在 remote host 和 remoteport 里输入分别 telnet 代理的地址和端口,在 local port输入本地监听端口,如 23,在 proxy 页点击 start,这样 telnet 127.0.0.1 23 就是连接到二次代理上,接着输入要远程登录地址和端口即可,级联 socks 代理也一样,在port mapping 页输入二次代理的地址、端口和本地监听端口(如 1080),这样你就可以在其他软件上使用 127.0.0.1:1080 作为二次代理使用了,其他的如 ftp、pop3 代理也一样这样作为二级代理与 http 代理级联。

    (四)、socks 代理和其他代理的级联
      socks 代理与其他代理级联,这里介绍的是 sockscap,跟上面介绍的一样,在setting 对话框里输入 socks 代理的地址和端口, 然后 add 其他需要用二次代理的软件,如 IE,OE 和 flashfxp 等软件,只要在 internet 选项里输入第二级 http 和 ftp 代理的地址和端口,在 sockscap 里运行 IE 就能使用二级的 http 和 ftp 代理,其他的软件也一样,设置上二级代理在 sockscap 里运行即可使用二级代理。

    (五)、tlenet 代理之间的级联
      其实 telnet 代理之间的级联很简单,以常用的 wingate 代理为例,当我们 telnet到代理时出现 Wingate> 的提示,直接输入另外一个 telnet 代理的地址和端口即可,一般是"ip port",有些代理是"ip:port"(如 CSM Proxy Server),输入即可连到二次代理上,在二次代理输入要 telnet 登录的地址就可以了。上面介绍了几种常用代理的级联方法,其实就是灵活使用上面的 httport、sockscap 等几个软件,只要熟练掌握软件的使用,能够玩出很多的花样来,比如跟其它的软件配合使用, 至于国外的二次代理, http 代理可以到 multiproxy 的主页上去找,他代理可以在 google 上输入 free proxy http socks 来搜索,最新软件可以到软件的主页获得,最后说一句,学好 httport 软件的使用大有前途, 对那些只开了 http代理,其他端口被封的人大有用处。
    注:sockscap 的主页 http://www.socks.nec.com/
      httport 的主页 http://www.htthost.com/
      multiproxy 的主页 http://www.multiproxy.org/

    1、先找一个国内的 SOCKS4 或者 SOCKS5 代理,之所以是国内的,主要是避免国际流量。同时,教育网内的用户还要注意的,不同学校定义的免费流量 IP 段是不同的,为了保护你免遭巨额流量费,一定要确认该 FREE 的 SOCKS 代理是免费的!!!
    2、运行 SOCKSCAP——文件——设置——填入代理(区分 SOCKS4 和 SOCKS5)
    3、添加:新建——浏览——你要运行的软件(如 IE)——确定。
      记住,每次要运行软件,只有从 SCOKSCAP 里面运行才生效!

    七、代理服务器具体日常应用

    (一)、怎样使用代理访问被屏蔽掉的网站
      由于某些原因,中国电信把一些国外网站屏蔽掉了,所有国内用户不能访问,还有一些国外的网站禁止中国的 IP 访问,解决方法就是使用国外的代理服务器。但是教育网用户不能访问国外网站,所有国外的代理也不能为之使用,是否我们便无能为力了
    呢?不,我们可以参照下面二次代理的使用方法解决。

    1.去 Download 一个 Sockscap32,在设置中填好 Socks 代理服务器地址。

    2.将浏览器的快捷方式拖到 SocksCap32 的空白框中。联网后,先启动 Sockscap32。再在浏览器中填上国外代理服务器的地址,在SocksCap32 中运行浏览器即可。

    (二)、如何通过代理使用 FoxMail 收信
      可以使用 sockscap32 解决。前提:有一个好用的 Socks 代理,通过一个可以访问的 Socks 代理(Socks5 或者 Sock4 代理),将 FoxMail 的快捷方式拖到 SocksCap32 的空白框中, 你的 Foxmail 即可以畅通无阻了。 同样的 方法也适用于 Cterm、 Sterm 等 Telnet
    软件访问教育网内的各大 BBS 站点,加快速度,而又能隐藏真实 IP 地址等等。有时会出现不能解析服务器地址的现象,可以先使用 ping pop.mail.yahoo.com 命令,然后把解析到的 IP 地址填入 Foxmal 的 POP3 服务器选项。
    另一法:假设你有 POP3 代理服务器,例如:203.95.7.196,你的账号为Algam@21cn.com;则在 OutlookExpress 或 FOXMAIL30 中应按如下设置:POP3 服务器地址中填写:代理服务器地址,203.95.7.19 6(端口无须设定);SMTP 服务器地址为:原来的 SMTP 服务器地址,smtp.21cn.com(实际上因为不需要用他发信,所以 SMTP 服务器地址可以随便填写);帐号为:原来账号 Algam#21cn.com(既用’#‘取代原来的’@'符号); 口令为:原来的账号口令。

    (三)、QQ 中使用代理
      QQ 使用代理可以隐藏真实 IP,这样可以避免一些不必要的骚扰。QQ 的会员可以能够使用 HTTP 代理的功能,而非会员就只能使用 Socks 代理了。有些公司网络只能上网浏览不能使用 QQ,主要是封了 Socks 端口,避免员工上班的时候用 QQ 聊天。其实这种情况也有办法解决。首先下载一个 SocksOnline 软件,是将普通 HTTP 代理转换为“万能”的 Socks5 代理的工具,SocksOnline 代理是利用了 CommOnline 的在线通讯能力,进行 Socks 代理转接。SocksOnline 代理使用非常简单,只要将客户端应用的 Socks5代理设置到 SocksOnlin e 的地址,客户端即能正常使用。

    八、谁在架设代理服务器?

    架设代理服务器的主要是 ISP 和一些有内部网的公司、企业和单位。ISP 架设代理服务器一般是为了减小数据流量、提高用户的浏览速度,它让其用户都通过代理服务器
    来访问 WWW 网,这样,对于相当一部分经常性重复访问的数据,代理服务器就可以直接传送给用户而不用重复下载;有内部网的单位,它们可能租用了一条专线或拨号上网,
    但却只有这一台机器可以上网,那么就在它上面安装一个代理服务器软件吧,于是内部网的其它机器也就可以通过这个代理服务器上网了。

    九、哪些人在使用代理服务器?

    最直接的用户当然是教育网和科技网内的 IP 受限制而不能访问国外资源的贫苦大众,他们可以通过可以搜索到 ChinaNet 上那些没有设置权限限制的代理服务器,从而
    能够通过代理服务器访问国外资源。代理服务器的第二大用户群则是 169 用户,他们一般只能在 169 网内部转悠,必须通过那些横跨 169 网和 ChinaNet 的代理服务器才能访问 Internet 网。
    另外,有些 163 用户或教育科技网中可以直接访问国外的用户出于某种需要(如隐藏身份)也搜索和使用代理服务器。

    十、http,socks4,socks5代理的区别
    * HTTP代理

    能够代理客户机的HTTP访问,主要是代理浏览器访问网页,它的端口一般为80、8080、3128等;

    * SOCKS代理

    SOCKS代理与其他类型的代理不同,它只是简单地传递数据包,而并不关心是何种应用协议,既可以是HTTP请求,所以SOCKS代理服务器比其他类型的代理服务器速度要快得多。

    SOCKS代理又分为SOCKS4和SOCKS5 二者不同的是SOCKS4代理只支持TCP协议(即传输控制协议),而SOCKS5代理则既支持TCP协议又支持UDP协议(即用户数据包协议),还支持各种身份验证机制、服务器端域名解析等。

    SOCK4能做到的SOCKS5都可得到,但SOCKS5能够做到的SOCK4则不一定能做到,比如我们常用的聊天工具QQ在使用代理时就要求用SOCKS5代理,因为它需要使用UDP协议来传输数据

    参考文章:https://blog.csdn.net/Yoshinomm/article/details/79046385
    展开全文
  • squid代理服务器的应用

    万次阅读 2021-12-07 15:53:08
    一、代理 1、缓存代理 Web代理的工作机制 缓存网页对象,减少重复请求 2、代理的基本类型 传统代理:适用于Internet,需明确指定服务端 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙...

    一、代理

    1、缓存代理

    Web代理的工作机制
    缓存网页对象,减少重复请求

    2、代理的基本类型

    传统代理:适用于Internet,需明确指定服务端
    透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
    反向代理:如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的WEB服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

    3、使用代理的好处

    1. 资源获取:代替客户端实现从原始服务器的资源获取;
    2. 加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用;
    3. 缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速
    4. 隐藏真实地址:代理服务器代替客户端去获取原始服务器资源,从而隐藏客户端真实信息。

    二、安装实际操作

    1、squid服务器操作

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# setenforce 0
    [root@localhost ~]# hostname squid
    [root@localhost ~]# su
    
    [root@squid ~]# yum install gcc gcc-c++ make -y
    [root@squid ~]# yum install -y gd gd-devel pcre-devel              这个是日志系统因为考虑到要断网所以先行安装
    
    [root@squid ~]# cd /opt
    

    拷入两个文件
    在这里插入图片描述

    [root@squid opt]# tar xf squid-3.5.27.tar.gz           注意这里不能用zxvf 只能xvf
    [root@squid opt]# cd squid-3.5.27/
    [root@squid squid-3.5.27]# ./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 --disable-poll --enable-epoll --enable-gnuregex
    [root@squid squid-3.5.27]# make && make install
    [root@squid squid-3.5.27]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
    [root@squid ~]# useradd -M -s /sbin/nologin squid
    [root@squid ~]# chown -R squid:squid /usr/local/squid/var/
    [root@squid ~]# vim /etc/squid.conf
    

    在这里插入图片描述
    增加

    在这里插入图片描述
    这里添加
    在这里插入图片描述

    cache_effective_user squid                 #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
    cache_effective_group squid                   #添加,指定账号基本组
    cache_mem 240 MB
    reply_body_max_size 100 MB
    maximum_object_size 4096 KB
    
    [root@squid ~]# squid -k parse                      ##检查配置文件
    

    在这里插入图片描述

    [root@squid ~]# ss -natp |grep squid
    

    在这里插入图片描述
    可以去写一个配置文件快速启动程序

    [root@squid ~]# vim /etc/init.d/squid
    #!/bin/bash
    #chkconfig: 35 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
    
    [root@squid ~]# chmod +x /etc/init.d/squid
    [root@squid ~]# chkconfig --add squid
    [root@squid ~]# chkconfig squid on
    

    在这里插入图片描述

    [root@squid ~]# iptables -F
    [root@squid ~]# iptables -F -t nat
    [root@squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT 
    [root@squid ~]# iptables -nL
    

    在这里插入图片描述
    web服务器配置

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# setenforce 0
    [root@localhost ~]# hostname web
    [root@localhost ~]# su
    [root@web ~]# 
    
    [root@web ~]# yum install httpd -y
    [root@web ~]# systemctl start httpd
    [root@web ~]# cd /etc/httpd/logs/
    [root@web logs]# ls
    access_log  error_log
    [root@web logs]# vim /var/www/html/index.html
    

    在这里插入图片描述
    在这里插入图片描述
    打开日志

    [root@web ~]# tail -f /var/log/httpd/access_log 
    

    squid服务器上打开日志

    [root@squid ~]# cd /usr/local/squid/var/logs/
    [root@squid logs]# ls
    access.log  cache.log
    [root@squid logs]# tail -f access.log 
    

    找台主机输入web服务器地址192.168.133.100
    在这里插入图片描述
    web服务器查看
    在这里插入图片描述
    在虚拟win7上测试
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    然后输入web服务器地址192.168.133.100
    显示网页
    在这里插入图片描述
    这时在squid服务器上的日志就有了记录
    在这里插入图片描述
    web服务器上的日志记录
    在这里插入图片描述
    透明模式
    在squid代理服务器上加一块网卡
    在这里插入图片描述
    两块网卡设置

    [root@squid ~]# cd /etc/sysconfig/network-scripts/
    [root@squid network-scripts]# cp ifcfg-ens33 ifcfg-ens37
    [root@squid network-scripts]# vim ifcfg-ens33
    

    在这里插入图片描述

    [root@squid network-scripts]# vim ifcfg-ens37
    

    在这里插入图片描述
    在这里插入图片描述

    [root@squid network-scripts]# systemctl restart network
    

    在这里插入图片描述
    然后把web服务器变为外网

    [root@web ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
    

    在这里插入图片描述

    [root@web ~]# systemctl restart network
    

    在这里插入图片描述

    [root@web ~]# systemctl restart httpd
    

    代理服务器设置

    [root@squid network-scripts]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf  开启路由
    [root@squid network-scripts]# sysctl -p
    net.ipv4.ip_forward = 1
    
    [root@squid network-scripts]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.91.50/24 -p tcp --dport 80 -j REDIRECT --to 3128                         针对http转发
    [root@squid network-scripts]# iptables -t nat -I PREROUTING -i ens33 -s 192.168.91.50/24 -p tcp --dport 443 -j REDIRECT --to 3128                        针对https转发
    iptables -I INPUT -p tcp --dport 3128 -j ACCEPT              机器重启需要打这条命令
    

    这时都打开代理和web日志
    然后改变客户机
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在web服务器上设置

    [root@web ~]# vim /var/www/html/index.html 
    

    在这里插入图片描述

    [root@web ~]# systemctl restart httpd
    

    在客户机上输入web服务器地址12.0.0.16
    在这里插入图片描述
    在web服务器上查看日志
    在这里插入图片描述

    2、acl模式

    在配置文件squid.conf 中,ACL访问控制通过以下两个步骤来实现:
    ① 使用acl 配置项定义需要控制的条件;
    ② 通过http_access配置项对已定义的列表做“允许”或“拒绝”访问的控制。

    2.1、定义访问控制列表

    格式:
    acl 列表名称 列表类型 列表内容
    列表名称:名称自定义,相当于给acl起个名字(有点类似于shell脚本变量名)
    列表类型:必须使用squid预定义的值,对应不同类别的控制条件
    列表内容:是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格为分隔,为“或”的关系)

    [root@squid ~]# vim /etc/squid.conf
    

    在这里插入图片描述
    增加这两条
    在这里插入图片描述

    [root@squid ~]# service squid restart
    正在关闭Squid...
    正在启动Squid...
    

    在代理服务器上查看日志,访问已被拒绝
    在这里插入图片描述

    2.2、客户机测试

    然后在客户机上测试打不开网页了
    在这里插入图片描述

    3、日志

    sarg(Squid Analysis Report Generator),是一款squid日志分析工具,采用HTML格式,详细列出每一位用户访问Internet的站点信息、时间占用信息、排名、连接次数、访问量等

    3.1、安装图像处理软件包

    yum install -y gd gd-devel pcre-devel           在一开始已安装,因为现在没网
    
    [root@squid ~]# mkdir /usr/local/sarg
    [root@squid ~]# cd /opt
    [root@squid opt]# tar zxvf sarg-2.3.11.tar.gz 
    [root@squid opt]# cd sarg-2.3.11/
    [root@squid sarg-2.3.11]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
    [root@squid sarg-2.3.11]#make && make install
    

    配置sarg文件

    [root@squid ~]# vim /etc/sarg/sarg.conf
    

    –7行–取消注释
    access_log /usr/local/squid/var/logs/access.log #指定访问日志文件
    –25行–取消注释
    title “Squid User Access Reports” #网页标题
    –120行–取消注释,修改
    output_dir /var/www/html/sarg #报告输出目录
    –178行–取消注释
    user_ip no #使用用户名显示
    –184行–取消注释,修改
    topuser_sort_field connect reverse #top排序中,指定连接次数采用降序排列,升序是normal
    –190行–取消注释,修改
    user_sort_field connect reverse #对于用户访问记录,连接次数按降序排序
    –206行–取消注释,修改
    exclude_hosts /usr/local/sarg/noreport #指定不计入排序的站点列表的文件
    –257行–取消注释
    overwrite_report no #同名同日期的日志是否覆盖
    –289行–取消注释,修改
    mail_utility mailq.postfix #发送邮件报告命令
    –434行–取消注释,修改
    charset UTF-8 #指定字符集UTF-8
    –518行–取消注释
    weekdays 0-6 #top排行的星期周期
    –525行–取消注释
    hours 0-23 #top排行的时间周期
    –633行–取消注释
    www_document_root /var/www/html #指定网页根目录

    [root@squid ~]# touch /usr/local/sarg/noreport
    [root@squid ~]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
    [root@squid ~]# sarg
    

    在这里插入图片描述
    这时要本地源yum安装http

    [root@localhost yum.repos.d]# yum install -y httpd
    [root@localhost yum.repos.d]# systemctl start httpd
    

    3.2、查看日志

    3.2.1、在squid服务器上直接查看

    使用浏览器访问 http://192.168.133.50/sarg,查看sarg报告网页。
    在这里插入图片描述
    在这里插入图片描述

    3.2.2、可以在日后写入脚本读取日志

    date -s 
    #添加计划任务,执行每天生成报告
    vim /usr/local/sarg/report.sh
    #/bin/bash
    #Get current date
    TODAY=$(date +%d/%m/%Y)
    #Get one week ago today
    YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)         
    /usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null                            # -o 输出到报告目录中         
    exit 0 
    
    chmod +x /usr/local/sarg/report.sh 
    
    crontab -e
    0 0 * * * /usr/local/sarg/report.sh
    

    手动方式
    #直接访问squid http://192.168.133.50/squid-reports周期性订划任务执行每天生成报告crontab-o输出到报告目录中

    sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)
    

    ##再次执行,产生新的报告,页面可视多了一天的日志报告记录
    http://192.168.133.50/squid-reports/index.html

    sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)
    

    3、反向代理

    如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的Web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

    工作机制:
    ● 缓存网页对象,减少重复请求
    ● 将互联网请求轮询或按权重分配到内网web服务器
    ● 代理用户请求,避免用户直接访问Web服务器,提高安全

    [root@localhost ~]# systemctl stop httpd
    

    3.1、开启防火墙

    [root@localhost ~]# iptables -F
    [root@localhost ~]# iptables -t nat -F
    

    在这里插入图片描述

    [root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    

    3.2、设置squid

    [root@localhost ~]# vim /etc/squid.conf
    

    在这里插入图片描述
    在这里插入图片描述

    http_port 80 accel vhost vport
    #squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和webserver的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。
    accel :反向代理加速模式
    vhost:支持域名或主机名来表示代理节点
    vport :支持IP和端口来表示代理节点

    parent :代表为父节点,上下关系,非平级关系
    80:代理内部web服务器的80端口
    0 :没有使用icp,表示就一台squid服务器
    no-query :不做查询操作,直接获取数据
    originserver :指定是源服务器
    round-robin :指定squid 通过轮询方式将请求分发到其中一台父节点
    max_conn :指定最大连接数
    weight :指定 权重
    name :设置别名

    [root@localhost ~]# service squid restart                     重启squid
    

    如果是在透明模式下做需要把透明模式的设置注销掉

    3.3、节点服务器设置

    [root@localhost ~]# systemctl stop firewalld.service 
    [root@localhost ~]# setenforce 0
    [root@localhost ~]# yum install -y httpd
    [root@localhost ~]# systemctl start httpd
    
    [root@localhost ~]# echo "this is zytest01" >> /var/www/html/index.html   节点1服务器写入
    [root@localhost ~]# echo "this is fxytest02" >> /var/www/html/index.html  节点2服务器写入
    

    3.4、客户机测试

    客户机的域名映射配置
    修改C:\Windows\System32\drivers\etc\hosts 文件
    在这里插入图片描述
    然后更改代理服务器设置
    在这里插入图片描述
    打卡网址www.zy.com 不断刷新就是2个服务器轮巡显示
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • mac命令行配置代理服务器When you configure a proxy server on your Mac, applications will send their network traffic through the proxy server before going to their destination. This may be required by ...
  • 同事用jmeter自带的代理服务器录制脚本,总是会遇到录制不到自己想录制的内容,但是会录制也写乱七八糟的东西。 其实主要原因还是没有在浏览器中导入CA证书的原因,但是这个在很多人写文档中又没有体现,这里记录...
  • Nginx笔记——代理服务配置

    千次阅读 2022-03-30 09:55:36
    Nginx的代理配置,正向代理、反向代理、负载均衡
  • 代理服务器基本知识

    万次阅读 多人点赞 2018-01-12 17:21:21
    代理服务器系列(一):基础知识 2005 年 9 月 10 日 世界网络教研组 编 一、什么是代理服务器? 代理服务器英文全称是 Proxy Server,其功能就是代理网络用户去取得网络信息。 形象的说:它是网络信息的中转站...
  • NAT映射和代理服务器

    千次阅读 2017-06-15 17:33:32
    也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态...
  • NAT技术与代理服务器的区别

    千次阅读 2018-06-20 21:16:19
    作为一款经典的代理服务软件,WinGate能够提供多种网络代理服务。 其最新版除了提供常用的HTTP、Socks代理服务以外,还支持 DHCP、DNS服务。 同时,它还提供了完整的POP3和SMTP服务,用户可以借此构建一个邮件...
  • Squid代理服务器

    万次阅读 2019-08-11 09:31:20
    目录 一、Squid代理服务器概念 二、Squid代理的作用 ...1、Squid是基于Unix的代理服务器(proxy server),它缓存比起点源点更接近请求者的互联网内容。Squid支持缓存多种不同的网络对象,包括那...
  • 万字长文带你了解最常用的开源 Squid 代理服务器

    千次阅读 多人点赞 2020-03-01 21:04:00
    作者:JackTian 微信公众号:杰哥的IT之旅(ID...和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求,作为应用层的代理服务软件,Squid 主要提供缓存加速、应用层过滤...
  • 反向代理服务器

    万次阅读 2018-08-13 20:37:05
    文章转自:http://www.cnblogs.com/heluo/p/3922770.html  http://blog.csdn.net/keyeagle/article/details/6723408  https://www.cnblogs.com/smallrookie/p/5634738.html 一、什么是反向代理  反向代理...
  • nginx 配置文件详解3.1 nginx.conf文件配置属性详解3.2 配置服务代理:4. 配置过程的注意事项:4.1 nginx启动等命令4.2 location 详解4.2.1 location介绍4.2.2 location匹配原则**特别强调一点 1. nginx简单介绍 ...
  • HTTP 请求报文和响应报文包括哪些内容

    千次阅读 多人点赞 2021-01-20 19:22:41
    Accept:浏览器能够处理的内容类型 Accept-Charset:浏览器能够显示的字符集 Accept-Encoding:浏览器能够处理的压缩编码 Accept-Language:浏览器当前设置的语言 Connection:浏览器与服务器之间连接的类型 Cookie...
  • 最全搭建自己的SOCKS代理服务器

    千次阅读 2020-10-16 17:19:41
    1,SOCKS是什么? 它是一种防火墙安全...在编写网络爬虫的时候,我们平常所接触使用到的代理IP都是HTTP或者HTTPS的代理,很少应用到SOCKS代理。socks分别有4和5两个版本,现在5为主流,所以本文所要讲解的版本为...
  • Nginx搭建反向代理服务器过程详解

    千次阅读 2020-08-06 17:16:46
    一、反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给...
  • 使用Jmeter可以录制脚本,可以帮助我们进行...在测试计划下添加“HTTP代理服务器 HTTP代理服务器界面介绍 名称:为你的HTTP代理服务器起一个好听的名字,不好听可能无法运行 注释:字面意思,看个人意愿,多项目多...
  • ubuntu 使用代理服务器 squid

    千次阅读 2018-10-17 09:32:37
    代理服务器是目前网络中常见的服务器之一,它可以提供文件 缓存、复制和地址过滤等服务,充分利用有限的出口带宽,加快 内部主机的访问速度,也可以解决多用户需要同时访问外网但公 有IP地址不足的问题。同时可以...
  • HTTP代理服务器,有的地方也翻译为测试脚本录制器(HTTP(S) Test Script Recorder)。 通过它,我们可以完成jmeter脚本录制。 当你使用浏览器访问web应用程序时,HTTP(S)测试脚本记录器允许JMeter拦截并记录您的操作...
  • NAT技术与代理服务器详解

    千次阅读 2017-06-24 19:44:24
    NAT技术原理与应用1 概述1.1 简介1.1.1 名词解释公有IP地址:也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻 址...
  • 用Java开发代理服务器

    千次阅读 2018-06-29 09:55:14
    请求的第一行包含了目标URL。步骤二:代理服务器读取该URL,并把请求转发给合适的目标服务器。步骤三:代理服务器接收来自Internet目标机器的应答,把应答转发给合适的内部浏览器。例如,假设有一个企业的雇员试图...
  • 主要包括两方面的内容: 1.通过跳板机连接远程服务器或远程服务器上的容器(关于连接容器方法,参见博客),可以是多个跳板机,多次跳。比如服务器A是我们个人开发用的装有win10的电脑,服务器C只能通过B来连接,那么...
  • HTTP代理服务器的实现

    万次阅读 2018-04-21 20:18:04
    接下来都是我对HTTP代理服务器的理解。 HTTP代理服务(proxy server) 器就是客户端也是服务端,是一个事务处理的中间人,就像下图所展示的一样, 图片来源于《HTTP权威...
  • 1、在用户代理上用户发起资源请求,请求内容包括但不限于:指定资源的唯一标识IRI,指明动作类型(GET/POST/DELETE/PUT...) 2、用户代理解析用户输入IRI并从中获取目标域名,交由DNS服务器解析。如果IRI中指定某IP...
  • nginx代理服务器

    千次阅读 2016-07-05 10:39:51
    Nginx是一个轻量级高性能的服务器和反向代理,其特点是资源占用少,并发能力高。   一 概述   反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的...
  • Visual C#实现HTTP代理服务程序

    千次阅读 2018-12-03 17:31:43
     网络代理程序的种类非常多,根据代理服务程序代理的协议不同,分成HTTP代理服务程序、FTP代理服务程序等,运行代理服务程序的服务器也就称为HTTP代理服务器和FTP代理服务器。在本节中介绍的Web代理服务程序代理的...
  • http请求头包括哪些常见内容

    千次阅读 2019-05-11 13:39:00
    Host: www.study.com // 请求的地址域名和端口,不包括协议 Connection: keep-alive // 连接类型,持续连接 Upgrade-Insecure-Requests:1 // http 自动升级到https,防止跨域问题但是域名端口都不同的...
  • linux下设置代理服务器

    万次阅读 2015-09-21 12:30:06
    代理服务器,顾名思义就是局域上不能直接上网的机器将上网请求(比如说,浏览某个主页)发给能够直接上网的代理服务器,然后代理服务器代理完成这个上网请求,将它所要浏览的主页调入代理服务器的缓存;然后将这个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 356,063
精华内容 142,425
关键字:

代理服务包括哪些内容