首先借用一下前辈的话,解释下反向代理是什么?
反向代理:以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
其实反向代理的作用就是起到保护后端服务器的作用
如图:
看了这个图,好多小朋友都懂了,大概可以达成两点共识。
①:域名解析的是代理服务器。
②:反向代理重定向请求的是内网IP。前面我们公司的小哥配的是公网IP,一是不安全(公网IP+端口照样能够访问,代理个啥玩意呢),二是响应速度(内网在速率上秒杀外网,而且减少了过程。举个例子:代理和应用服务器在一个屋子,当别人敲门找到代理说请求应用。内网相当于直接把请求告诉代理,外网访问就是告诉人家你去那个地址再敲一次门提交你的请求)。
下面开始干活
一、安装发布代理服务haproxy
①:准备Haproxy1.4.24安装包。并上传到服务器
②:解压
tar -zxf haproxy-1.4.24.tar.gz
③:安装
进入haproxy目录,逐条执行以下2条命令:
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
④:配置
编辑 /usr/local/haproxy/haproxy.cfg 配置文件,配置反向代理
global
maxconn 15000
nbproc 1
daemon
defaults
option httpclose
maxconn 65535
timeout connect 600000ms
timeout client 600000ms
timeout server 600000ms
log 127.0.0.1 local0 err
listen win_ss
bind 0.0.0.0:10008
mode tcp
#balance source
server s1 8.8.8.8:1234 weight 128 maxconn 2000 inter 60s check rise 1 fall 3
server s2 8.8.4.4:1235 weight 128 maxconn 2000 inter 60s check rise 1 fall 3
listen status
bind 0.0.0.0:1188
mode http
stats refresh 30s
stats uri /
stats auth admin:admin
#stats hide-version
stats admin if TRUE
##代理http端口
frontend http_in
##使用http的方式代理
bind 0.0.0.0:80
mode http
option httpclose
option forwardfor
#配置第一个项目请求
acl project1-server path_beg -i /project1/
use_backend project1-server if project1-server
##以下表示请求在以上路径都不符合时,使用该后台服务器处理
default_backend root
#当以域名+/project1请求时转发到下面地址,内网ip+端口+项目名(项目名一个时可以不写)
backend project1-server
mode http
option forwardfor
server wget 182.15.0.12:80/project1 check inter 10s
#匹配不到路径时默认转发的地址
backend root
mode http
option forwardfor
server cas01 182.15.0.5:80 check inter 10s
⑤:启动
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
二、部署应用服务
打包到tomcat发布就不说了。讲两点:
①:关闭安全组对外访问的端口,比如你以前应用服务器tomcat的端口80,8080等等那些,全部关闭。当然防火墙对应的tomcat端口别关闭了。这是两回事,防火墙建议开启,好东西免费干嘛不用。
②:安全组放通内网访问策略,这是一个泛域匹配放通所有,并不是说只通配0-12或0-16的子域。想要深入了解可以百度。
162.16.0.0/12 ALL 192.168.0.0/16 ALL
这样反向代理就完成了,输入域名就可以访问了。
而你再输入应用服务器的公网IP+端口访问,不好意思访问不了。这样代理的目的就达到了。
一般代理服务器的配置和带宽比应用服务器的配置要高,这样用户体验也提升了。