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

news/2024/5/8 22:37:17/文章来源:https://blog.csdn.net/weixin_33895695/article/details/89861335

配置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 










本文转自 于学康 51CTO博客,原文链接:http://blog.51cto.com/blxueyuan/1919476,如需转载请自行联系原作者

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

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

相关文章

JavaScript练习网站收集

在学习的过程中会发现很多知识点如果不在工作中运用或者手写带验证的话&#xff0c;很容易忘记。任何技能的掌握都是需要不断练习的。在此收集一些自己遇到的JavaScript练习的网站。 codewars 国外的一个练习网站&#xff0c;有JavaScript&#xff0c;也有Python&#xff0c;每…

更改浏览器网站图标与标头(普通网站和el-admin)

还记得第一次更改图标和标头&#xff0c;还是学习htmlcss写作品&#xff08;静态网页&#xff09;的时候。 1.简单静态网页 只需要一个title标签和link引入。 注意&#xff1a;这种引入图标的写法&#xff0c;仅对当前页面生效 2.el-admin修改 先找到public文件夹下的inde…

常见负面SEO方法,你应该知道的事?

由于百度算法的不断调整&#xff0c;并且开始严厉打击作弊行为&#xff0c;一些搜索引擎优化公司面临竞争对手的压力&#xff0c;经常采用一些不正当的手法。 入侵竞争对手的网站&#xff0c;并采用一些非常规的手段&#xff0c;使得让你的网站看起来&#xff0c;变的有一些不一…

第32篇 网站试题生成word下载时bug解决

问题描述&#xff1a;英语科下载word时&#xff0c;选的题型有&#xff1a;完形填空和词汇运用两种&#xff0c;但下载出来题的序号排序混乱。 1 完形填空序号混乱解决 网站上生成的如下&#xff1a; 而我生成的word如下&#xff1a; 原因在于&#xff1a;正则表达式出了问题…

(转)3个常用基于Linux系统命令行WEB网站浏览工具(w3m/Links/Lynx)

一般我们常用的浏览器肯定是基于可视化界面的图文结合的浏览界面效果&#xff0c;比如FireFox、Chrome、Opera等等&#xff0c;但是有些时候折腾和项目 的需要&#xff0c;在Linux环境中需要查看某个页面的文字字符&#xff0c;我们需要简单的浏览网页页面&#xff0c;但是也不…

Docker启动nginx容器--搭建网站

1.下载nginx镜像 docker pull nginx 2.启动nginx镜像 docker run -d --name nginx01 -p 80:80 -v /data/nginx/www:/usr/share/nginx/html -v /data/nginx/log:/var/log/nginx nginx -d 后台运行方式-name 给容器起别名-p 宿主机和容器端口映射 3.进入到容器中 docker e…

K8S集群使用Ingress实现网站入口动静分离实践

今年3月份在公司的内部k8s培训会上&#xff0c;和研发同事详细探讨了应用部署容器化部署的几个问题&#xff0c;问题简要如下&#xff1a; 1、java应用容器化部署首先通过自动化部署工具编译出全量的war包&#xff0c;将war包直接编译到docker镜像后推送到私用仓库并版本化控制…

网站多次切换服务器ip,站群多ip服务器怎么切换ip?

租多ip服务器的主要目的是&#xff0c;有时候用服务器采集别处的内容被封了IP&#xff0c;我们就经常碰到。这时候我们就要换服务器主IP才可以继续采集&#xff0c;下面跟大家讲下多ip服务器怎么切换ip的方法&#xff0c;这个方法只对多IP的服务器有效&#xff0c;只有一个IP的…

wordpress windows安装_本地搭建WordPress外贸网站教程

如果你还是个小白&#xff0c;想学习外贸建站技术&#xff0c;无奈还不懂域名和服务器知识&#xff0c;那么在本地搭建WordPress网站是再好不过的选择了&#xff0c;不需要任何经济上的成本&#xff0c;是学习建站的很好的选择&#xff0c;那么怎么在本地搭建WordPress网站呢&a…

sqlserver项目案例c语言,浅谈《基于PHP的动态网站开发》课程的项目案例设计原稿(图文高清版)...

浅谈《基于PHP的动态网站开发》课程的项目案例设计(原稿)1、语言MySQL数据库技术及PHP操作MySQL数据库后端网站编程技术等内容。以案例为主线,学习掌握和运用所涉及的知识点,根据知识点的常用性和关键性端课程的学生教学背景基于PHP的动态网站开发课程,教学课时学时。前导课程网…

浅谈|营销型网站建设的优势特征

营销型网站建设主要特征是以展示宣传企业的品牌及产品为主&#xff0c;网站通过对企业信息的进行系统宣传&#xff0c;让有需求的浏览者熟悉企业的所提供的产品及服务&#xff0c;并通过有效的在线交流沟通方式搭建起潜在客户与企业之间的桥梁。 通过营销型网站宣传自已的产品及…

linux运维面板_宝塔Linux面板一键迁移功能实现网站快速搬家教程

宝塔面板对于广大不精通linux运维的站长来说绝对是一大神器&#xff0c;无论是系统运维还是网站搭建都非常的易于上手。而且面板还有一个“一键迁移”的功能&#xff0c;之前一直都是内测功能&#xff0c;近期随着宝塔版本更新正式上线了。刚好飞鸟这边有个网站需要搬家&#x…

bootstrap网站后台从设计到开发

前言 毕业后在一家小公司找的工作是做前端&#xff0c;小公司必须要身兼多职,会多门技术&#xff0c;所以为了工作需要自学ps,做过微信运营&#xff0c;后来为了做erp管理系统&#xff0c;又开始学习c# ,之后公司有新项目要用wpf ,我又开始学习wpf。感觉自己工作这三年虽然学了…

找到一个在线网站截图的网站

因为业务的关系&#xff0c;需要定期查看一些网站和微博&#xff0c;之前只能每天定期访问这些网站&#xff0c;非常的麻烦&#xff0c;还经常忘记&#xff0c;也用过一些截屏工具&#xff0c;也不是很方便&#xff0c;还是要手动的操作。后来找到一个非常好用的网站 http://ww…

linux 嵌入式汇编,常用ARM汇编指令 - 嵌入式Linux教程_Linux教程_Linux公社-Linux系统门户网站...

在嵌入式开发中&#xff0c;汇编程序常常用于非常关键的地方&#xff0c;比如系统启动时初始化&#xff0c;进出中断时的环境保护&#xff0c;恢复等对性能有要求的地方。ARM指令集可以分为六大类&#xff0c;分别为数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时…

SQL实战 9.高频SQL面试题 网站访客最近登录日期系列

最近登录日期(一) 描述 某网站每天有很多人登录&#xff0c;请你统计一下该网站每个用户最近登录是哪一天&#xff0c;用的是什么设备.有一个登录(login)记录表&#xff0c;简况如下:第1行表示user_id为2的用户在2020-10-12使用了客户端id为1的设备登录了该网站。。。第4行表示…

非英文网站如何使用MySQL的字符集

使用 MySQL字符集 对于非英文网站&#xff0c;当他们使用非英语语言从数据库中写入或读取数据时&#xff0c;常常必须解决字符集的问题。字符集指导数据库哪种字符编码方案用于数据的写入读取,这样可以简单地理解为字符集的一个子集整理&#xff0c;它告诉数据库如何存储数据。…

【杂记】一个不错的国外论文没费下载网站

Researchgate https://www.researchgate.net 搜索页面https://www.researchgate.net/search?q 比如搜索"virtual trackball" 下面这篇是我想要的 总结 还是非常好的一个网站&#xff0c;IT技术类的论文非常多&#xff01;