代理缓存服务之Squid
代理缓存服务
Squid是linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存。
简单来说,Squid服务程序会按照收到的用户请求向网站源服务器请求页面、图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上。
当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力。
在使用Squid服务程序为用户提供缓存代理服务时,具有正向代理模式和反向代理模式之分。
- 正向代理模式:让用户通过Squid服务程序获取网站页面等资源,以及基于访问控制列表(ACL)功能对用户访问网站行为进行限制,在具体的服务方式上又分为标准代理模式与透明代理模式。
- 标准正向代理模式:把网站数据缓存到服务器本地,提高数据资源被再次访问时的效率,但是用户在上网时必须在浏览器等软件中填写代理服务器的IP地址与端口号信息,否则默认不使用代理服务。
- 透明正向代理模式:作用与标准正向代理模式基本相同,区别是用户不需要手动指定代理服务器的IP地址与端口号,所以这种代理服务对于用户来讲是相对透明的。
- 反向代理模式:让多台节点主机反向缓存网站数据,从而加快用户访问速度。
正向代理服务的拓扑图:
反向代理服务的拓扑图:
配置Squid服务程序:
准备两台虚拟机,一台用作Squid服务器,另外一台用作Squid客户端。
Squid服务器和客户端的操作系统和IP地址信息:
主机名称 | 操作系统 | IP地址 |
Squid服务器 | RHEL 7 | 外网:dhcp获取 内网:192.168.10.10 |
Squid客户端 | RHEL 7 | 内网:192.168.10.20 |
这样一来,我们就有了一台既能访问内网,又能访问外网的虚拟机了。一会儿需要把Squid服务程序部署在这台虚拟机上,然后让另外一台原本只能访问内网的虚拟机(即Squid客户端)通过Squid服务器进行代理上网,从而使得Squid客户端也能访问外部 网站。
安装squid服务:
- [root@zhangjh ~]# yum install squid
常用的Squid服务程序配置参数以及作用:
参数 | 作用 |
http_port 3128 | 监听的端口号 |
cache_mem 64M | 内存缓冲区的大小 |
cache_dir ufs /var/spool/squid 2000 16 256 | 硬盘缓冲区的大小 |
cache_effective_user squid | 设置缓存的有效用户 |
cache_effective_group squid | 设置缓存的有效用户组 |
dns_nameservers IP地址 | 一般不设置,而是用服务器默认的DNS地址 |
cache_access_log /var/log/squid/access.log | 访问日志文件的保存路径 |
cache_log /var/log/squid/cache.log | 缓存日志文件的保存路径 |
visible_hostname linuxprobe.com | 设置Squid服务器的名称 |
正向代理————》标准正向代理
Squid服务程序软件包在正确安装并启动后,默认就已经可以为用户提供标准正向代理模式服务了,而不再需要单独修改配置文件或者进行其他操作。
确定服务端和客户端网络互通,并且服务端可以上外网。
- [root@zhangjh ~]# ping 192.168.10.20 -c 3 -i 0.1
- PING 192.168.10.20 (192.168.10.20) 56(84) bytes of data.
- 64 bytes from 192.168.10.20: icmp_seq=1 ttl=64 time=0.754 ms
- 64 bytes from 192.168.10.20: icmp_seq=2 ttl=64 time=0.210 ms
- 64 bytes from 192.168.10.20: icmp_seq=3 ttl=64 time=0.236 ms
- --- 192.168.10.20 ping statistics ---
- 3 packets transmitted, 3 received, 0% packet loss, time 202ms
- rtt min/avg/max/mdev = 0.210/0.400/0.754/0.250 ms
- [root@zhangjh ~]# ping www.baidu.com -c 3 -i 0.1
- PING www.a.shifen.com (111.13.100.92) 56(84) bytes of data.
- 64 bytes from 111.13.100.92: icmp_seq=1 ttl=54 time=6.70 ms
- 64 bytes from 111.13.100.92: icmp_seq=2 ttl=54 time=7.54 ms
- 64 bytes from 111.13.100.92: icmp_seq=3 ttl=54 time=8.97 ms
- --- www.a.shifen.com ping statistics ---
- 3 packets transmitted, 3 received, 0% packet loss, time 207ms
- rtt min/avg/max/mdev = 6.706/7.740/8.973/0.936 ms
客户端打开浏览器,设置代理。
默认代理端口号是3128,如图所示:
然后打开浏览器,访问任意网站:
Squid服务程序默认使用3128、3401与4827等端口号,因此可以把默认使用的端口号修改为其他值,以便起到一定的保护作用。
- [root@zhangjh ~]# vim /etc/squid/squid.conf
- 58 # Squid normally listens to port 3128
- 59 http_port 8888
修改完后重启squid服务,客户端修改代理端口号即可正常访问。
ACL访问控制:
在日常工作中,企业员工一般是通过公司内部的网关服务器来访问互联网,当将Squid服务程序部署为公司网络的网关服务器后,Squid服务程序的访问控制列表(ACL)功能将发挥它的用武之地。
它可以根据指定的策略条件来缓存数据或限制用户的访问。比如很多公司会分时段地禁止员工逛淘宝、打网页游戏,这些禁止行为都可以通过Squid服务程序的ACL功能来实现。
实例:禁止所有客户端访问网址中包含game关键词的网站。
1、编辑squid配置文件
- [root@zhangjh ~]# vim /etc/squid/squid.conf
添加两行:- acl deny_keyword url_regex -i game
- http_access deny deny_keyword
- [root@zhangjh ~]# systemctl restart squid
禁止之前是可以访问腾讯游戏页面的:
禁止之后效果:
正向代理————》透明正向代理:
“透明”二字指的是让用户在没有感知的情况下使用代理服务,这样的好处是一方面不需要用户手动配置代理服务器的信息,进而降低了代理服务的使用门槛;另一方面也可以更隐秘地监督员工的上网行为。
在透明代理模式中,用户无须在浏览器或其他软件中配置代理服务器地址、端口号等信息,而是由DHCP服务器将网络配置信息分配给客户端主机。这样只要用户打开浏览器便会自动使用代理服务了。
1、修改客户端的网络配置
- root@zhangjh ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond-bond0
- IPADDR=192.168.10.20
- NETMASK=255.255.255.0
- GATEWAY=192.168.10.10
- [root@zhangjh ~]# vim /etc/resolv.conf
- nameserver 8.8.8.8
- nameserver 114.114.114.114
- [root@zhangjh ~]# systemctl restart network
2、把客户端浏览器的代理信息删除
3、配置防火墙
4、编辑配置文件
- [root@zhangjh ~]# vim /etc/squid/squid.conf
- 60 http_port 3128 transparent
- 61
- 62 # Uncomment and adjust the following to add a disk cache directory.
- 63 cache_dir ufs /var/spool/squid 100 16 256
- [root@zhangjh ~]# squid -k parse
- .....省略输出内容.....
- [root@zhangjh ~]# squid -z
- .....省略输出内容.....
- [root@zhangjh ~]# systemctl restart squid
5、这时客户端主机再刷新一下浏览器,就又能访问网络了
反向代理:
网站页面是由静态资源和动态资源一起组成的,其中静态资源包括网站架构CSS文件、大量的图片、视频等数据,这些数据相对于动态资源来说更加稳定,一般不会经常发生改变。但是,随着建站技术的更新换代,外加人们不断提升的审美能力,这些静态资源占据的网站空间越来越多。如果能够把这些静态资源从网站页面中抽离出去,然后在全国各地部署静态资源的缓存节点,这样不仅可以提升用户访问网站的速度,而且网站源服务器也会因为这些缓存节点的存在而降低负载。
反向代理是Squid服务程序的一种重要模式,其原理是把一部分原本向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。但是这种技术的弊端也很明显,如果有心怀不轨之徒将自己的域名和服务器反向代理到某个知名的网站上面,从理论上来讲,当用户访问到这个域名时,也会看到与那个知名网站一样的内容(有些诈骗网站就是这样骗取用户信任的)。因此,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也可以避免这种窃取行为。如果访问开启了防护功能的网站,一般会看到如图所示的报错信息。
1、修改配置文件
- [root@zhangjh ~]# vim /etc/squid/squid.conf
- 60 http_port 192.168.1.106:80 vhost #桥接网卡ip地址
- 61 cache_peer 42.121.252.58 parent 80 0 originserver #网站原服务器ip地址,可以通过ping网站域名获得
- [root@zhangjh ~]# systemctl restart squid
2、使用反向代理模式访问网站
代理缓存服务之Squid的更多相关文章
- 《Linux就该这么学》培训笔记_ch16_使用Squid部署代理缓存服务
<Linux就该这么学>培训笔记_ch16_使用Squid部署代理缓存服务 文章最后会post上书本的笔记照片. 文章主要内容: 代理缓存服务 配置Squid服务程序 正向代理 标准正向代 ...
- 第16章 使用Squid部署代理缓存服务
章节概述: 本章节从代理缓存服务的工作原理开始讲起,让读者能够清晰理解正向代理(普通模式.透明模式)与反向代理的作用. 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低 ...
- squid代理缓存服务
man.linuxde.net 1.squid是Linux系统中的代理缓存服务,通常用作WEB网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存. 2.squid服务特点:配置简单.效 ...
- Linux基础学习-使用Squid部署代理缓存服务
使用Squid部署代理缓存服务 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常作为Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存.Squid服务配置简单. ...
- 虚拟机中Linux环境下使用Squid部署代理缓存服务(及透明传输)
小知识: 正确的使用Squid服务程序部署代理缓存服务可以有效提升访问静态资源的效率,降低原服务器的负载. 不仅如此,还为读者们添加了对指定IP地址.网页关键词.网址与文件后缀的ACL访问限制功能的实 ...
- Linux下squid代理缓存服务环境部署
代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载 ...
- 使用Squid部署代理缓存服务(标准正向、透明正反向代理)
正向代理让用户可以通过Squid服务程序获取网站页面等数据,具体工作形式又分为标准代理模式与透明代理模式.标准正向代理模式: 将网站的数据缓存在服务器本地,提高数据资源被再次访问时的效率,但用户必需在 ...
- 12、Nginx代理缓存服务
通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后端压力,提高网站并发延时 1.缓存常见类型 服务端缓存 代理缓存, 获取服务端内容进行缓存 客户端浏览器缓存 Nginx代理缓存原理 ...
- nginx的缓存服务
都知道缓存的目的是为了减小服务端的压力,可以在客户端直接取到数据 客户端---------------nginx(代理缓存)------------------服务端 代理缓存的描述: 就是客户端发送 ...
随机推荐
- 【起航计划 029】2015 起航计划 Android APIDemo的魔鬼步伐 28 App->Preferences->Default Values 偏好默认值
DefaultValues 介绍了如何在XML中定义Preference的缺省值. <CheckBoxPreference android:key="default_checkbox& ...
- SpringCloud的学习记录(6)
这一章节讲fegin的使用. 在我们生成的Demo项目上右键点击New->Module->spring Initializr, 然后next, 填写Group和Artifact等信息, 这 ...
- 【Unity3D学习笔记】解决放大后场景消失不显示问题
不知道为啥,我的Unity场景放大到一定大小后,就会消失... 解决方案: 选中一个GameObject,然后按F键. F键作用是聚焦,视图将移动,以选中对象为中心.
- JavaScript 数组排序(从大到小,从小到大)
1.数组的从大到小排序 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- April 28 2017 Week 17 Friday
The only thing more painful than learning from experience is not learning from experience. 比从经验中学习更为 ...
- windows如何关闭指定端口
关闭windows中被占用的端口,比如我们常见的8080端口被占用了 1.查找端口的PID netstat -aon|findstr "8080" 如图 PID为3888 2.关闭 ...
- Radix Sort
为了完成二维数据快速分类,最先使用的是hash分类. 前几天我突然想,既然基数排序的时间复杂度也不高,而且可能比hash分类更稳定,所以不妨试一下. 在实现上我依次实现: 1.一维数组基数排序 基本解 ...
- 最长上升子序列&&最长不下降子序列
百练2757: 题目描述: 对于给定的序列,求出最长上升子序列的长度. 题目链接:http://bailian.openjudge.cn/practice/2757 解题思路 一.动态规划 1. 找子 ...
- 今天 小小收获, 看了 sam Xiao 的好帖子 明白了 泛型委托 的 意思。
Func<int,int,int> cAdd1 = (int x, int y) => { return x + y; }; int result= aAdd1(1,2); cons ...
- 模拟ie9的placeholder
ie9 的input框没有placeholder属性 啧啧啧~~~ 所以就用span标签来模拟一下 先判断浏览器类型 if(navigator.useAgent.indexOf("MSIE ...