squid正反向代理-加快网站访问速度

news/2024/5/10 9:31:20/文章来源:https://blog.csdn.net/weixin_34279061/article/details/85068277

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

一:squid服务概述

  Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。

代理服务器是介于 Internet 和内网计算机之间的联系桥梁,他的功能就是代替内网计算机去访问互联网信息。使用代理服务器,可以有效的节约IP资源,多台内网计算机可以通过同一个IP访问Internet。目前大部分企业都是通过代理服务器为企业内部员工提供上网服务。

端口: 3128

二:实验安装

1:安装squid:

[root@xuegod63 ~]# yum install squid -y

2:配置文件位置:

[root@xuegod63 ~]# ls /etc/squid/squid.conf

3:启动服务

[root@xuegod63 ~]# /etc/init.d/squid start

[root@xuegod63 ~]# netstat -antup | grep 3128

tcp        0      0 0.0.0.0:3128       0.0.0.0:*     LISTEN     4376/(squid)

[root@xuegod63 ~]# chkconfig squid on

[root@xuegod63 ~]# chkconfig --list squid

squid          0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭

4:服务启动失败的解决方法

[root@xuegod63 ~]# vim /etc/hosts

192.168.10.20 squid_A.tarena.com  sxueod63

[root@xuegod63 ~]#  squid -z    #初始化缓存                   

2014/03/12 14:06:39| Creating Swap Directories

[root@xuegod63 ~]# /etc/init.d/squid start

三:实战举例

根据实现的方式不同,代理服务可以分为正向代理和反向代理,正向代理包括传统代理和透明代理,这两种代理服务完成的工作相差不多

第一块:正向代理

1:正向传统代理服务器

在客户端使用的时候需要在web游览器中进行设置,来指定服务器的端口和地址,这种代理主要是针对局域网访问internet的时候用的比较广泛,但由于客户端需要进行设置,所以这种并不是最常用的。

1)加速原理:

wKioL1j_-VOzZp2FAAAr-dUD5ng214.png 

代理服务器的功能是代替网络用户去访问网络信息,并把获得的信息返回给用户,其工作步骤大致如下:

1) 客户机向代理服务器发起访问互联网的请求

2) 代理服务器收到请求后检查请求是否被允许,如果允许将会进行下一步处理,否则丢弃该请求。

3) 代理服务器先查找本地缓存中是否有客户机请求的数据,如果有则直接返回给客户端,否则继续下一步。

4) 如果没有找到数据缓存,则代替客户机在互联网上发起请求。

5) 接到请求回应后复制一份到缓存中,然后返回给客户机

1)实验拓扑

wKiom1j_-WTSul6qAAB3MmN_E5c713.png 

2)实验需求:

搭建squid代理服务器,使内网主机xuegod64:192.168.2.2 ,能够通过xuegod63上的squid代理服务器加速上网。

3)实验环境

配置xuegod63网络:   eth0: 192.168.1.63  添加eth1,配置IP:192.168.2.1  vmnet4

配置xuegod64网络:   添加eth0,配置IP:192.168.2.2 网关: 192.168.2.1     vmnet4

4)实验步骤

xuegod63配置:

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

改: #http_access deny all

 为: http_access allow all          //允许所有用户使用它作为代理

5)启动服务

[root@xuegod63 ~]# service squid restart

[root@xuegod63 ~]# chkconfig squid on

6)配置xuegod64 客户端

   在浏览器里指定代理服务器的ip地址(192.168.2.1)和端口号(3128)

 

wKioL1j_-XrwwtlXAACwE9WtbSE269.png

wKiom1j_-XqQytXtAADHWyrNiRQ705.png

 

 wKiom1j_-kzQIPIIAACwE9WtbSE699.png

7)测试:

wKioL1j_-YyTPRrKAAII_sXfKn8950.png 

#在xuegod64上的浏览器中打开www.163.com可以访问,但是当ping www.163.com ping不通的

wKiom1j_-a_y_PoLAAF72UAclG0649.png

#在xuegod64上的浏览器中打开192.168.1.1  可以访问到当前的路由器,并且找到了当前的 主机是匿名主机的IP地址是192.168.1.63  而不是xuegod64上的IP地址。这样xuegod63就是一个代理服务器了,客户端(xuegod63)通过代理服务器(xuegod64)访问到网络,而客户端本身自己是不能访问网络的。

  

 2:正向透明代理服务器

提供与传统代理相同的服务,但不需要用户进行设置,而是通过默认路由和防火墙的重定向功能,在整个过程中用户不知道其中的过程,所以称之为透明代理。使用透明代理时网页游览器访问网站时的域名解析请求优先发给DNS服务进行解析。透明代理必须在linux操作系统的防火墙上进行操作。操作上不是很灵活

 

1)实验拓扑

wKioL1j_-c7Q2PHaAAB3MmN_E5c245.png 

2)实验要求

   客户端用在浏览器里指定代理服务器的ip地址和端口号,就可以直接访问公网上的网站服务器。配置透明squid代理提升访问速度

透明代理= squid + iptables

3)实验步骤

(1修改配置文件配置支持透明代理

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

改:http_port 3128

为:http_port 3128 transparent 透明的

[root@xuegod63 ~]# service squid restart

(2)开启路由转发功能:

[root@xuegod63 ~]# vim /etc/sysctl.conf

改:net.ipv4.ip_forward = 0

为:net.ipv4.ip_forward = 1

[root@xuegod63 ~]# sysctl –p

(3)配置iptables:

[root@xuegod63 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.1.63 #让内网可以上网

或者

[root@xuegod63 ~]# iptables -t nat -A PREROUTING -s 192.168.2.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

 (4)测试:把浏览器取消代理。

wKiom1j_-e-x95h6AAEcXdNhH50252.png 

[root@xuegod64 ~]# ping g.cn  

PING g.cn (203.208.48.144) 56(84) bytes of data.

64 bytes from 203.208.48.144: icmp_seq=1 ttl=43 time=72.4 ms

64 bytes from 203.208.48.144: icmp_seq=2 ttl=43 time=73.7 ms

64 bytes from 203.208.48.144: icmp_seq=3 ttl=43 time=74.0 ms

#这样就可以上网了

 

第二块:反向代理

反向代理服务器的工作原理

反向代理方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送 到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

wKioL1j_-frx0iKhAAHor4vy__w020.png 

反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。

1、作内容服务器的替身

如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。

这样,代理服务器就在安全数据库和可能的恶意***之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸***成功,作恶者充其量也仅限于访 问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。

wKiom1j_-gezpW7EAAEEIl4IPlg485.png

2、作为内容服务器的负载均衡器

可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。

对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。

可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期 间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

wKiom1j_-hDT4W-HAAEzI1pd_3g624.png 

例:配置squid反向代理加速度内网web服务器访问速度

1):实验拓扑图:

wKioL1j_-hqzlv3vAAB57iGE5Fg110.png 

2):实验要求

客户端物理机访问 192.168.1.63 代理服务器。192.168.1.63 代理服务器缓存客户端所需要的web服务器中的数据。实现xuegod63给xuegod64 加速度端口80和81两个服务。只加速度静态页面或视频。   

思路:

1:在代理服务器上,squid的主配置文件中开启支持虚拟主机功能,然后配置squid主配置文件,指定内容web服务器的IP地址。

2:在内容服务器上,开启web服务器,在httpd服务的主配置文件中配置虚拟主机。

3):实验步骤

(1)公网客户端,物理机:修改物理机hosts文件:

windows 下的hosts文件在:C:\Windows\System32\drivers\etc首先,在 Client 端修改 hosts 文件,添加如下两行:

192.168.1.63  www.serverA.com

192.168.1.63   www.serverB.com

#在这里面第一次修改是不修改的,只需要将hosts文件拖到桌面就可以修改了,之后再将修改的文件拖到此文件夹中

(2):配置xuegod63 squid代理服务器:

#这里,Squid 反向代理服务器监听端口:8000 (默认是:3128)访问时,需要在客户端,打开浏览器,在浏览器地址栏输入: www. servera.com:8000

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

改:59 #http_access denny all

为:60 http_access allow all

改:http_port  3128

为:http_port 8000 vhost  

# 配置Squid 服务器监听本机 8000 端口,开启vhost 支持虚拟主机功能,这样也可以给多台服务器加速。

 

 (3):打开虚拟主机支持 ,在此行下面,添加以红色内容:

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

cache_peer 192.168.2.2 parent 80 0 no-query originserver weight=1 name=a

cache_peer 192.168.2.2 parent 81 0 no-query originserver weight=1 name=b

cache_peer_domain a www.serverA.com

cache_peer_domain b www.serverB.com

#以上4行配置,让 Squid 服务器知道:

#从客户端过来的请求如果找的www.serverA.com,则 Squid代理服务器客户端192.168.2.2 的端口 80发送回复

#从客户端过来的请求如果找的www.serverB.com,则 Squid代理服务器客户端192.168.2.2的端口 81 发送回复

cache_peer_access a allow all

cache_peer_access b allow all

# cache_peer 设置:允许其它 cache 机和访问a和b

[root@xuegod63 ~]# service squid restart

 

(4):配置两个站点web服务器,xuegod64配置HTTP虚拟主机:基于端口做虚拟主机:

[root@xuegod64 ~]# cp -r /boot/grub/ /var/www/html/

[root@xuegod64 ~]#echo  www.serverA.com  > /var/www/html/index.html 

[root@xuegod64 ~]#echo  www.serverB.com  > /var/www/html/grub/index.html

[root@xuegod64 ~]# vim /etc/httpd/conf/httpd.conf

#Listen 12.34.56.78:80

Listen 80

Listen 81

 

NameVirtualHost *:80

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html #虚拟主机80端口的网站根目录

    ServerName www.serverA.com #虚拟主机(web服务器)名称

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost *:81>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/grub#虚拟主机81端口的网站根目录

    ServerName www.serverB.com #虚拟主机(web服务器)的名称

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

[root@xuegod64 ~]# service httpd restart

 

(5) :测试:http://www.servera.com:8000/

wKioL1j_-iXxrb7xAABfeeT_5-8746.png 

http://www.serverb.com:8000/

wKioL1j_-jGx0wtpAABR5eqL5dQ454.png 

 

 

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

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

相关文章

IIS网站发布容易出现的几个问题

1. 更新版本或者重新安装.net Framework: 2. 更改配置文件节点&#xff1a; 3. 访问权限问题的更改&#xff1a; 转载于:https://www.cnblogs.com/taidou/p/5464408.html

00-01.PHP 网站假设win7配置自己的IIS服务器亲自做的图文很详细 [转 - 赞 ]

win7配置自己的IIS服务器亲自做的图文很详细 分步阅读跟人网站爱好初学者必看的win7系统配置自己的IIS&#xff0c;可以在你自己的电脑上配置网站服务器发不到网上&#xff0c;下面就跟着我的步骤一起做吧100%成功。步骤/方法 点击开始-------控制面板这个就是打开的控制面板--…

Learn Git Branching:一个非常好的学习Git命令的网站

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录网址GitHub地址特点演示Demo简介闯关网址 https://learngitbranching.js.org/ GitHub地址 https://github.com/pcottle/learnGitBranching 特点 Lear…

发现一个在线学习JavaScript的网站,墙裂推荐!

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 最近上网发现了一个学习JavaScript非常好的网站&#xff0c;他以最新的 JavaScript 标准为基准&#xff0c;通过简单但足够详细的内容&#xff0c;为你讲解从基础到…

8个免费在线编程游戏网站,让每个人都可以学习编程

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录CodeMonkeyCodinGameFlexbox FroggyFlexbox DefenseCodeCombatCheckIOCode WarsRuby Warrior学习编码不仅需要熟悉语法&#xff0c;还要求有一定的逻辑和分…

接私活必备!国外5个顶级程序员接私活网站

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 人生交契无老少&#xff0c;论交何必先同调。 文章目录PeoplePerHour&#xff1a;薪酬最高的专业自由职业者网站GuruFreeLancerUpworkFiverr话说程序员这个职业有个…

开源网站GitHub把自己给开源了

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 将自己的生命寄托于他人记忆中&#xff0c;生命仿佛就加长了一些;光 荣,是我们获得的新生命,其可珍可贵&#xff0c;实在不下于天賦的生命。 作为开源的核心&#…

13个有意思的网站,你一定要看

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 1.无尽的马 网址&#xff1a;http://endless.horse/ 一匹由字符拼成的马&#xff0c;你会发现它的腿一直延生到网页的尽头。 不管你怎么样往下拖动网页&#xff0c…

10个程序员必上的网站

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录1.StackOverflow2.Quora3.Reddit4.StackExchange5.CodeProject6.Google Groups7.CodeRanch8.Programmers Heaven9.FindNerd10.Chegg当我们写代码的时候&am…

IIS同时实现网站部分使用https协议访问另一部分http访问

一&#xff1a;什么是https SSL(Security Socket Layer)全称是加密套接字协议层&#xff0c;它位于HTTP协议层和TCP协议层之间&#xff0c;用于建立用户与服务器之间的加密通信&#xff0c;确保所传递信息的安全性&#xff0c;同时SSL安全机制是依靠数字证书来实现的。 SSL基于…

10个前端开发常用的速查网站

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 → devhints.​io → gitsheet.​wtf → overapi.​com → grid.​malven.​co → cheat-sheets.org → htmlreference.​io → cheatography.​com → htmlcheats…

制作自己的个人博客网站

拥有一个私人的博客是一件很酷的事情&#xff0c;私以为有想法的同学都应该有个博客&#xff0c;就像日记一样&#xff0c;写写自己的经历&#xff0c;感悟等。我也在B站上花费了好多时间&#xff0c;终于找到了一个特别简单易行的&#xff0c;感谢up主爱生活的逍遥君。 现在&…

Hacking Team 泄密阴影犹存 香港与台湾网站遭攻击

2019独角兽企业重金招聘Python工程师标准>>> 据悉&#xff0c;自7月9日开始&#xff0c;有黑客团队对台湾和香港网站发起攻击&#xff0c;所用工具竟然是Hacking Team泄出的Flash漏洞利用程序PoisonIvy。 Hacking Team 泄密阴影犹存 攻击者首先使用了一个来自Hackin…

让自己的网站实现在线编辑office文档

我们可以通过Office Web Apps&#xff08;OWA&#xff09;来实现在线编辑word&#xff0c;excel&#xff0c;power point&#xff0c; one note&#xff0c;并集成到自己的网站里去。 1 准备工作 1.1 操作系统 安装了带 Windows Server 2008 R2 x64 Edition 更新程序的 Windows…

nginx的全局变量参数解释 --网站Nginx Rewrite 规则

2019独角兽企业重金招聘Python工程师标准>>> nginx的全局变量参数解释&#xff1a; $arg_PARAMETER#这个变量包含GET请求中&#xff0c;如果有变量PARAMETER时的值。 $args #这个变量等于请求行中(GET请求)的参数&#xff0c;例如foo123&barblahblah; $binar…

[置顶]大型网站技术架构(六)网站的伸缩性架构

网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的伸缩性设计可以分成两类&#xff0c;一类是根据功能进行物…

网站优化方案总结

分为两类:性能优化和体验优化 一.性能优化: 1.静态资源托管; 2.图片合并; 3.图片压缩; 4.js合并; 5.css合并; 6.少操纵DOM元素;(浏览器渲染原理,可选) 7.少用递归; 8.css3开启3d; 二.体验优化

网站优化的方法

网站优化主要分为二大方面:性能和体验,详细如下:

IIS配置使网站访问速度提升

声明 &#xff1a; 转至http://blog.csdn.net/a13062331830/article/details/17090213 1、发布到正式服务器上的Web应用程序web.config中<compilation debug"true" targetFramework"4.0" /> 2、网站启用内容过期【css images files】 3、启用GZIP压缩…

用github部署静态网站

对于简单的静态网站&#xff0c;可以直接挂在github上&#xff0c;为什么推荐这样呢&#xff0c;因为免费。在Github上免费部署静态网站的简单的操作步骤如下&#xff1a;1. 新建仓库Repository2. 克隆已有的仓库&#xff0c;复制项目到仓库文件夹中&#xff0c; 再次上传修改后…