Squid代理服务器

本文涉及的产品
云防火墙,500元 1000GB
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: Squid代理服务器

     Squid是Linux系统中最常用的一款开源代理服务软件,可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大。

Squid服务基础

  • squid的功能

用于web代理,缓存网页对象,减少重复请求。

  • 代理的基本类型

       传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、聊天工具。下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发给指定的代服务器。

       透明代理:提供与传统代理相同的服务和功能,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向,实际仍然交给代理服务器来处理。重定向的过程对客户机来说是“透明”的,用户甚至并不知道自己在使用代理服务,所以称为透明代理。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器。

安装及运行控制

编译安装Squid

       配置Squid的编译选项时,将安装目录设为/usr/local/squid,其他选项根据实际需求来定,配置前可参考"./configure --help"说明。

1.  [root@localhost ~]# mount /dev/cdrom /media
2.  mount: /dev/sr0 is write-protected, mounting read-only
3.  [root@localhost ~]# tar zxf /media/squid-3.5.23.tar.gz -C /usr/src
4.  [root@localhost ~]# cd /usr/src/squid-3.5.23/
5.  [root@localhost squid-3.5.23]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-linux-netfilter --enable-async-io=240 --enable-default-err-language=Simplify_Chinese --disable-poll --enable-epoll --enable-gunregex
6.  [root@localhost squid-3.5.23]# make && make install

上述选项含义如下:

--prefix=/usr/local/squid :安装目录。

--sysconfdir=/etc :单独将配置文件修改到其他目录。

--enable-linux-netfilter :使用内核过滤。

--enable-async-io=240 :异步l/O,提升存储性能。

--enable-default-err-language=Simplify_Chinese :错误信息的显示语言。

--disable-poll与--enable-epoll :关闭默认使用poll模式,开启epoll模式提升性能。

--enable-gunregex:使用GNU正则表达式。

创建链接文件、创建用户和组。

1.  [root@localhost ~]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
2.  [root@localhost ~]# useradd -M -s /sbin/nologin squid
3.  [root@localhost ~]# chown -R squid:squid /usr/local/squid/var/

Squid的配置文件

1.  [root@localhost ~]# vim /etc/squid.conf
2.  ......//省略部分
3.  # Squid normally listens to port 3128
4.  http_port 3128                                  //用来指定代理服务监听的地址和端口(默认为3128)
5.  cache_effective_user squid                      //指定squid的程序用户,用来设置初始化、运行时缓存的账号、否则启动不成功。
6.  cache_effective_group squid
7.  ......//省略部分

       默认情况下,配置文件中不包括cache_effective_user squid与cache_effective_group squid配置项,需要手动添加。

Squid的运行控制

检查配置文件语法

[root@localhost ~]# squid -k parse

启动、停止Squid

       第一次启动Squid服务时,会自动初始化缓存目录。在没有可用的Squid服务脚本的情况下,也可以直接调用Squid程序来启动服务,这时需要先进行初始化。

1.  [root@localhost ~]# squid -z        //-z选项用来初始化缓存目录
2.  [root@localhost ~]# squid           //启动squid服务

确认Squid监听状态。

1.  [root@localhost ~]# netstat -anpt | grep squid
2.  tcp6       0      0 :::3128                 :::*                    LISTEN      47321/squid-1)

使用Squid服务脚本

       为了使Squid服务的启动、停止、重载等操作更加方便,可以编写Squid服务脚本,并使用chkconfig和systemctl工具来进行管理。

1. [root@localhost ~]# vim /etc/init.d/squid
2. #!/bin/bash
3. # chkconfig: 2345 90 25
4. # config: /etc/squid.conf
5. # pidfile: /usr/local/squid/var/run/squid.pid
6. # Description: Squid - Internet Object Cache.
7. PID="/usr/local/squid/var/run/squid.pid"
8. CONF="/etc/squid.conf"
9. CMD="/usr/local/squid/sbin/squid"
10. case "$1" in
11. start)
12.   netstat -anpt | grep squid &> /dev/null
13.   if [ $? -eq 0 ]
14.   then
15.    echo "squid is running"
16.     else
17.    echo "正在启动 squid..."
18.    $CMD
19.   fi
20. ;;
21. stop)
22.   $CMD -k kill &> /dev/null
23.   rm -rf $PID &> /dev/null
24. ;;
25. status)
26.   [ -f $PID ] &> /dev/null
27.     if [ $? -eq 0 ]
28.     then
29.   netstat -anpt | grep squid
30.   else
31.    echo "Squid is not runing."
32.   fi
33. ;;
34. restart)
35.   $0 stop &> /dev/null
36.   echo "正在关闭 squid..."
37.     $0 start &> /dev/null
38.   echo "正在启动 squid..."
39. ;;
40. reload)
41.   $CMD -k reconfigure
42. ;;
43. check)
44.   $CMD -k parse
45. ;;
46. *)
47.   echo "用法: $0 (start | stop | restart | reload | check | status)"
48. ;;
49. esac
50. [root@localhost ~]# chmod +x /etc/init.d/squid
51. [root@localhost ~]# chkconfig --add squid       //添加为系统服务
52. [root@localhost ~]# systemctl restart squid

构建代理服务器

       本节主要从三个方面来学习Squid服务的构建和使用,分别为传统代理、透明代理、和ACL访问控制。传统代理的实现最为简单,透明代理还需要结合默认路由、防火墙策略等一起来完成,ACL列表主要用来针对客户机的Web访问过程进行过滤控制。

传统代理

       使用传统代理的特点在于,客户机的相关程序,必须指定代理服务器的地址、端口等基本信息。下面通过案例学习传统代理的配置和使用方法。

环境如下:

       在客户机1.10上,指定Squid作为Web代理,以隐藏自己的真实IP地址。

       在Squid服务器上为客户机访问各种网站提供代理服务,但是禁止代理下载超过10MB大小的文件。

       Web服务器上搭建Apache,作为测试网站。

web服务器配置

1.  [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
2.  [root@localhost ~]# systemctl restart network
3.  [root@localhost ~]# systemctl stop firewalld
4.  [root@localhost ~]# systemctl disable firewalld
5.  [root@localhost ~]# rm -rf /etc/yum.repos.d/*
6.  [root@localhost ~]# vim /etc/yum.repos.d/test.repo
7.  [yum]
8.  name=a
9.  baseurl=file:///media
10.  gpgcheck=0
11.  保存退出,挂载系统光盘并安装httpd服务
12.  [root@localhost ~]# mount /dev/cdrom /media
13.  mount: /dev/sr0 写保护,将以只读方式挂载
14.  [root@localhost ~]# yum -y install httpd
15.  创建一个测试网页
16.  [root@localhost ~]# echo 6666666 > /var/www/html/index.html
17.  [root@localhost ~]# systemctl start httpd
18.  [root@localhost ~]# systemctl enable httpd
19.  生一个大文件:cat  /dev/zero   >  /var/www/html/yy (回车后,等几秒,ctrl+c结束)

首先配置IP地址、关闭防火墙等配置,Squid服务器需要配置两个IP。

1.  [root@localhost ~]# ifconfig            //查看两个网卡名称
2.  ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
3.        ......//省略部分
4.  ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
5.        ......//省略部分
6.  [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33          //修改网络配置
7.  [root@localhost ~]# cd /etc/sysconfig/network-scripts 
8.  [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36                //复制ens33到当前文件夹命名为第二块网卡信息
9.  ......//省略部分
10.  修改IP地址等配置,把网卡名称为ens33的都改为ens36
11.  [root@localhost ~]# systemctl restart network
12.  [root@localhost ~]# systemctl stop firewalld
13.  [root@localhost ~]# systemctl disable firewalld

Squid服务器的配置

       配置Squid实现传统代理服务时,需要注意添加http_access allow all访问策略,以便允许任意客户机使用代理服务。除此之外,为了限制下载的文件大小,还需要设置reply_body_max_size项,其他各种参数均可保持默认。

1.  [root@localhost ~]# vim /etc/squid.conf
2.  reply_body_max_size 10 MB                           //在配置文件中添加限制文件大小(10MB)

重载Squid服务

       修改squid.conf配置文件以后,需要重启服务生效。做了前面的脚本可以用"systemctl restart squid"启动,没做脚本用"squid -k reconfigure"启动。

[root@localhost ~]# squid -k reconfigure

客户机的代理配置

       在火狐浏览器中,点击下图所示位置,首选项→高级→网络→设置→手动配置代理→添加代理的ip和端口号→保存即可。其他浏览器配置基本相同。

代理服务的验证方法

       客户机1.10中通过浏览器访问目标网站http://200.0.0.10,然后观察Squid代理服务器、Web服务器的访问日志是否发挥作用。

  • 查看Squid访问日志的新增记录
1.  [root@localhost ~]# tail -f /usr/local/squid/var/logs/access.log 
2.  1655638857.719      2 192.168.1.10 TCP_MISS/200 360 GET http://200.0.0.10/ - HIER_DIRECT/200.0.0.10 text/html
3.  1655638857.799      1 192.168.1.10 TCP_MISS/404 482 GET http://200.0.0.10/favicon.ico - HIER_DIRECT/200.0.0.10 text/html
4.  1655638857.806      1 192.168.1.10 TCP_MISS/404 482 GET http://200.0.0.10/favicon.ico - HIER_DIRECT/200.0.0.10 text/html
  • 查看Web访问日志的新增记录
1.  [root@localhost ~]# tail -f /var/log/httpd/access_log 
2.  200.0.0.10 - - [19/Jun/2022:19:39:02 +0800] "GET /yy HTTP/1.1" 200 253325312 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
3.  200.0.0.10 - - [19/Jun/2022:19:39:07 +0800] "GET /yy HTTP/1.1" 200 253325312 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
4.  200.0.0.1 - - [19/Jun/2022:19:39:36 +0800] "GET /yy HTTP/1.1" 200 253325312 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"

       当客户机再此访问同一Web页面时,Squid访问日志中会增加新的记录,但Web访问日志中的记录不会有变化(除非页面变更或执行强制刷新等操作)。这说明客户机访问统一静态页面时,实际上是有代理服务器缓存提供的。

透明代理

       透明代理提供的服务功能与传统代理是一致的,但是其”透明“的现实依赖于默认路由和防火墙的重定向策略,因此更适用于为局域网主机服务,而不适合为internet中的客户机提供服务。

基于局域网主机通过Linux网关访问internet的环境,需求如下。

  1. 在linux网关上,构建Squid为客户家访问internet提供代理服务。
  2. 在所有的局域网客户机上,只需要正确设置IP地址、默认网关和DNS,不需要手动指定代理服务器的地址和端口等信息。

       以上实验环境,透明代理的关键在于linux网关服务器,而对于客户机仅需正确设置网络地址、默认网关、而并不需要指定代理服务器。

配置Squid支持透明代理

       Squid服务的默认配置并不支持透明代理,因此需要调整相关设置。对于2.6以上版本的Squid服务,只需要在http_port配置行加上一个"transparent"(透明)选项,就可以支持透明代理了。

1.  [root@localhost ~]# vim /etc/squid.conf
2.  ......//省略部分
3.  http_port 192.168.1.1:3128 transparent      //只在其中一个IP地址上提供服务(ens33网卡)
4.  [root@localhost ~]# squid -k reconfigure
5.  [root@localhost ~]# vim /etc/sysctl.conf
6.  net.ipv4.ip_forward = 1                     //开启路由转发功能
7.  [root@localhost ~]# sysctl -p               //刷新
8.  net.ipv4.ip_forward = 1

设置firewalld的重定向策略

       透明代理中的Squid服务实际上是构建在linux网关主机上的,因此只需正确设置防火墙策略,就可以将局域网主机访问internet的数据包转交给Squid进行处理。这需要用到firewalld的IP伪装与端口转发策略,其作用是实现本机端口的重定向,将访问网站协议HTTP、HTTPS的转发数据包交给本机的Squid服务(3128端口)。

       防火墙做端口转发操作,将访问本机80/443端口的请求转发到3128端口。

1.  [root@localhost ~]# systemctl start firewalld
2.  [root@localhost ~]# firewall-cmd --zone=external --add-interface=ens33
3.  The interface is under control of NetworkManager, setting zone to 'external'.
4.  success
5.  [root@localhost ~]# firewall-cmd --zone=internal --add-interface=ens36
6.  The interface is under control of NetworkManager, setting zone to 'internal'.
7.  success
8.  [root@localhost ~]# firewall-cmd --zone=external --add-service=http
9.  success
10.  [root@localhost ~]# firewall-cmd --zone=external --add-service=https
11.  success
12.  [root@localhost ~]# firewall-cmd --zone=external --add-port=3128/tcp
13.  success
14.  [root@localhost ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport 80 -j REDIRECT --to-ports 3128
15.  success
16.  [root@localhost ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport 443 -j REDIRECT --to-ports 3128
17.  success
18.  [root@localhost ~]# firewall-cmd --runtime-to-permanent
19.  success

验证透明代理的使用

       为了验证透明代理效果,如果存在手动指定的代理服务器设置应在客户机中将其去除。例如,在火狐浏览器中的连接设置中不要勾选使用代理服务器;客户机网关应设为Squid代理服务器的地址。

       在客户机1.10中通过浏览访问目标网站http://200.0.0.10/,然后观察Squid代理服务器、web服务器的访问日志,已验证透明代理是否发挥作用。在被访问的web服务器中,应该能够发现来自代理服务器200.0.0.1的访问记录。

ACL访问控制

       Squid提供了强大的代理控制机制,通过合理设置ACL并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。

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

定义访问控制列表

       每一行acl配置可以定义一条访问控制列表,格式如下:

acl 列表名称 列表类型 列表内容 ...

       ”列表名称“由管理员自行指定,用来识别控制条件;“列表类型”必须使用Squid预定义的值,对应不同类别的控制条件;“列表内容”是要控制的具体对象,不同类型的列表对应的内容也不一样,可以有多个值(以空格分隔,为“或”的关系)。

常用的ACL列表类型

列表类型 列表内容示例 用途/含义
src 192.168.1.0/24 源IP地址、网段、IP地址范围
dst www.123.com 目标IP地址、网段、主机名
port 80 443 8080 20 21 目标端口
dstdomain .q.com .w.com 目标域,匹配域内所有站点
time MTWHT 8:00-18:00 使用代理服务的时间段,字母表示一星期中的英文缩写M-Monday、T-Tuesday、W-Wednesday、H-Thursday、F-Friday、A-Saturday、S-Sunday
maxconn 20 每个客户机的并发连接数
url_regex url_regex -i ^rtsp:// 目标资源的URL地址,-i表示忽略大小写
Urlpath_regex urlpath_regex -i sex adult 网址中主机名后面的部分,-i表示忽略大小写

       在定义访问控制列表时,应结合当前网络环境正确分析用户的访问需求,准确定义使用代理服务的控制条件。

1.  [root@localhost ~]# vim /etc/squid.conf
2.  ......//省略部分
3.  #acl localnet src 192.168.0.0/16
4.  acl AAA src 192.168.1.0/24              //添加源网段
5.  acl BBB time MTWHF 09:00-17:00          //添加访问时间为每周一到周五九点掉下午五点访问
6.  http_access allow AAA BBB               //允许以上两条规则
7.  [root@localhost ~]# squid -k reconfigure

虚拟机可以通过date -s命令修改时间测试ACL规则是否成功

       需要限制的同一类对象较多时,可以使用独立的文件来存放,在acl配置行的列表内容处指定对应的文件位置即可。例如,若要针对目标地址建立黑名单文件,可以参考以下操作。

1.  [root@localhost ~]# mkdir /etc/squid
2.  [root@localhost ~]# vim /etc/squid/ipblock.list                 //建立目标IP地址名单
3.  61.135.167.36
4.  125.39.127.25
5.  60.28.14.0/24
6.  [root@localhost ~]# vim /etc/squid/dmblock.list                 //建立目标域地址名单
7.  .123.com
8.  .my.com
9.  [root@localhost ~]# vim /etc/squid.conf
10.  ......//省略部分
11.  acl IPBLOCK dst "/etc/squid/ipblock.list"                       //调用指定文件中的列表内容
12.  acl DMBLOCK dstdomain "/etc/squid/dmblock.list"

设置访问权限

       定义好各种访问控制列表以后,需要使用后http_access配置项来进行控制。必须注意的是,http_access配置行必须放在对应的 acl配置行之后。每行http_access配置确定一条访问控制规则。

http_access allow或deny 列表名...

       每条http_access规则中,可以同时包含多个访问控制列表名,每个列表之间以空格分隔,为“与”的关系,表示必须满足所有访问控制列表对应的条件才会进行限制。需要使用取反条件时,可以再访问控制列表前面添加“ !”符号。

1.  [root@localhost ~]# vim /etc/squid.conf
2.  http_access deny MC20                           //客户机的并发连接超过20将被阻止
3.  http_access allow WORKTIME                      //允许客户机在工作时间上网
4.  http_access deny all                            //默认禁止所有客户机使用代理

       执行访问控制时,Squid将按照各条规则的顺序依次进行检查,如果找到一条相匹配的规则就不再向后搜索。因此,规则的顺序安排是非常重要的,以下两种默认情况需要我们注意。

  1. 没有设置任何规则时:Squid服务将拒绝客户端的请求。
  2. 有规则但找不到相匹配的项:Squid将采用与最后一条规则相反的动作,即如果最后一条规则时allow,就拒绝客户端的请求,否则允许该请求。

       通常情况下,把最常用到的控制规则放到最前面,以减少Squid的负载。在访问控制的总策略上,建议采用“先拒绝后允许”或”先允许后拒绝“的方式,最后一条规则设为默认策略,设为"http_access allow all"或者"http_access deny all"。

验证访问控制效果

  • 测试访问权限限制

       对于使用http_access规则拒绝访问的情况(如访问被禁止的网站或者在禁止的时间段访问),浏览器的报错页面中会出现访问被拒绝的提示。

  • 测试文件下载权限

       对于限制文件下载大小的情况(reply_body_max_size配置项),当下在超过指定大小的Web对象时,浏览器的报错页面中会出现请求或访问太大的提示。

用来下载测试的文件可以通过dd命令生成。(在Web端配置)

1.  [root@localhost ~]# dd if=/dev/zero of=/var/www/html/a bs=10M count=10
2.  记录了10+0 的读入
3.  记录了10+0 的写出
4.  104857600字节(105 MB)已复制,0.392383 秒,267 MB/秒

Squid日志分析

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

安装GD库

1.  [root@localhost ~]# rm -rf /etc/yum.repos.d/*               //采用yum的方式安装
2.  [root@localhost ~]# vim /etc/yum.repos.d/yum.repo
3.  [yum]
4.  name=aaa
5.  baseurl=file:///media
6.  gpgcheck=0
7.  [root@localhost ~]# mount /dev/cdrom /media                 //挂载系统光盘
8.  mount: /dev/sr0 写保护,将以只读方式挂载
9.  [root@localhost ~]# yum -y install gd gd-devel httpd        //后面还需要httpd服务,在这里直接安装了

安装SARG

1.  [root@localhost ~]# eject
2.  [root@localhost ~]# mount /dev/cdrom /media                         //挂载sarg包光盘
3.  mount: /dev/sr0 写保护,将以只读方式挂载
4.  [root@localhost ~]# mkdir /usr/local/sarg
5.  [root@localhost ~]# tar zxf /media/sarg-2.3.7.tar.gz -C /usr/src
6.  [root@localhost ~]# cd /usr/src/sarg-2.3.7/
7.  [root@localhost sarg-2.3.7]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection && make && make install

上述配置项含义如下。

--prefix=/usr/local/sarg :路径

--sysconfdir=/etc/sarg :配置文件目录

--enable-extraprotection :添加额外的安全保护

配置

1.  [root@localhost ~]# vim /etc/sarg/sarg.conf 
2.  access_log /usr/local/squid/var/logs/access.log         //指定squid的访问日志文件(去掉#注释)
3.  title "Squid User Access Reports"                       //网页标题(去掉#注释)   
4.  output_dir /var/www/html/sarg                           //sarg报告的输出目录(将squid-reports改为sarg)(去掉#注释)
5.  www_document_root /var/www/html                         //网页根目录(去掉#注释)

运行

       直接执行sarg即可启动一次记录,建议设置符号链接,然后执行sarg,会看到提示信息。

1.  [root@localhost ~]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
2.  [root@localhost ~]# sarg
3.  SARG: 未知的选项 /www_document_root /var/www/html
4.  SARG: 纪录在文件: 17, reading: 100.00%
5.  SARG: 成功的生成报告在 /var/www/html/sarg/2022Jun19-2022Jun23
6.  [root@localhost ~]# systemctl start httpd
7.  [root@localhost ~]# systemctl enable httpd
8.  Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

验证

       多次执行sarg后,在客户端上访问sarg/目录可看到SARG报告。因为Squid服务器开启了防火墙,只能在内网查看,如192.168.1.1/sarg或200.0.0.1/sarg。


相关文章
|
3月前
|
XML 存储 缓存
Squid 缓存服务器配置
Squid 缓存服务器配置
135 0
Centos8下搭建Squid代理服务器
Centos8下搭建Squid代理服务器
237 0
|
Linux 网络安全 网络虚拟化
CentOS7安装squid代理服务器
CentOS7安装squid代理服务器
631 0
|
监控
老板让我去给客户搭建Squid代理服务器(下)
老板让我去给客户搭建Squid代理服务器(下)
184 0
|
缓存 负载均衡 网络协议
老板让我去给客户搭建Squid代理服务器(上)
老板让我去给客户搭建Squid代理服务器(上)
962 0
|
缓存 Linux 网络虚拟化
Squid缓存代理服务器
Squid缓存代理服务器
543 0
Squid缓存代理服务器
|
缓存 前端开发 JavaScript
Web缓存服务——Squid代理服务器应用(上)
正向代理:代替客户端向服务端发送请求。 反向代理:代理服务端,将请求转发给多个服务端。
522 1
|
监控 数据安全/隐私保护
Squid服务器ACL与日志分析
Squid服务器ACL与日志分析
298 0
Squid服务器ACL与日志分析
|
存储 缓存 安全
Web缓存服务——Squid代理服务器应用(下)
正向代理:代替客户端向服务端发送请求。 反向代理:代理服务端,将请求转发给多个服务端。
260 0
|
缓存 网络安全 Apache
Web缓存服务——Squid代理服务器应用(中)
正向代理:代替客户端向服务端发送请求。 反向代理:代理服务端,将请求转发给多个服务端。
228 0