16.4 反向代理
网站页面是由静态资源和动态资源一起组成的,其中静态资源包括网站架构CSS文件、大量的图片、视频等数据,这些数据相对于动态资源来说更加稳定,一般不会经常发生改变。但是,随着建站技术的更新换代,外加人们不断提升的审美能力,这些静态资源占据的网站空间越来越多。如果能够把这些静态资源从网站页面中抽离出去,然后在全国各地部署静态资源的缓存节点,这样不仅可以提升用户访问网站的速度,而且网站源服务器也会因为这些缓存节点的存在而降低负载。
反向代理是Squid服务程序的一种重要模式,其原理是把一部分原本向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。但是这种技术的弊端也很明显,如果有心怀不轨之徒将自己的域名和服务器反向代理到某个知名的网站上面,从理论上来讲,当用户访问到这个域名时,也会看到与那个知名网站一样的内容(有些诈骗网站就是这样骗取用户信任的)。因此,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也可以避免这种窃取行为。如果访问开启了防护功能的网站,一般会看到如图16-16所示的报错信息。
图16-16 访问网站时提示报错信息
刘遄老师为了实验需要而临时关闭了本书配套站点的CDN服务及防护插件,请大家尽量选择用自己的网站或博客进行该实验操作,避免影响到其他网站的正常运转,给他人造成麻烦。
使用Squid服务程序来配置反向代理服务非常简单。首先找到一个网站源服务器的IP地址,然后编辑Squid服务程序的主配置文件,把端口号3128修改为网站源服务器的地址和端口号,此时正向解析服务会被暂停(它不能与反向代理服务同时使用)。然后按照下面的参数形式写入需要反向代理的网站源服务器的IP地址信息,保存退出后重启Squid服务程序。正常网站使用反向代理服务的效果如图16-17所示。
[root@linuxprobe ~]# vim /etc/squid/squid.conf
………………省略部分输出信息………………
57
58 # Squid normally listens to port 3128
59 http_port 您的桥接网卡IP地址:80 vhost
60 cache_peer 网站源服务器IP地址 parent 80 0 originserver
61
………………省略部分输出信息………………
[root@linuxprobe ~]# systemctl restart squid
图16-17 使用反向代理模式访问网站