晓夏

YoungCheung

Zhang Sir's technical way

反向代理之Apache

浏览量:1024

1、什么是反向代理

        反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

2、环境规划

blob.png


3、web节点部署

        在两台web-node节点中均使用Yum安装一个Apache用于做真实机,监听8080端口

web-node1.com部署

[root@web01 ~]# rpm -ivh  
[root@web01 ~]# yum install -y gcc glibc gcc-c++ make screen tree lrzsz

##部署httpd服务
[root@web01 ~]# yum install -y httpd
[root@web01 ~]# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
[root@web01 ~]# systemctl start httpd
[root@web01 ~]# echo "web-node1.com" > /var/www/html/index.html
[root@web01 ~]# curl http://192.168.56.11:8080
web-node1.com

web-node2.com部署

[root@web02 ~]# rpm -ivh  
[root@web02 ~]# yum install -y gcc glibc gcc-c++ make screen tree lrzsz

##部署httpd服务
[root@web02 ~]# yum install -y httpd
[root@web02 ~]# sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
[root@web02 ~]# systemctl start httpd
[root@web02 ~]# echo "web-node2.com" > /var/www/html/index.html
[root@web02 ~]# curl http://192.168.56.12:8080
web-node2.com

4、反向代理部署

Apache 源码编译安装,并监听80端口

[root@lb01 src]#wget https://mirrors.aliyun.com/apache/httpd/httpd-2.4.25.tar.gz
[root@lb01 src]#tar xf httpd-2.4.25.tar.gz 
[root@lb01 src]#cd httpd-2.4.25
[root@lb01 httpd-2.4.25]# ./configure --prefix=/usr/local/httpd-2.4.25 --enable-so --enable-modules="all"
[root@lb01 httpd-2.4.25]# make && make install
[root@lb01 httpd-2.4.25]# ln -s /usr/local/httpd-2.4.25/ /usr/local/httpd
[root@lb01 httpd-2.4.25]# sed -i 's@#ServerName www.example.com:80@ServerName 192.168.56.10:80@g' /usr/local/httpd/conf/httpd.conf
[root@lb01 httpd-2.4.25]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@lb01 httpd-2.4.25]#/usr/local/httpd/bin/apachectl -k start

4.1 Apache配置反向代理

在/usr/local/httpd/conf/httpd.conf配置引用proxy配置文件

Include conf/extra/httpd-proxy.conf

4.2配置proxy反向代理

[root@lb01 conf]# cat    /usr/local/httpd/conf/extra/httpd-proxy.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
<Proxy balancer://web-cluster>
BalancerMember http://192.168.56.11:8080 loadfactor=1
BalancerMember http://192.168.56.12:8080 loadfactor=2
</Proxy>
ProxyPass /proxy balancer://web-cluster
ProxyPassReverse /proxy balancer://web-cluster
<Location /manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Allow from all
</Location>

模块注释:

#proxy模块
LoadModule proxy_module modules/mod_proxy.so
#链接模块
LoadModule proxy_connect_module modules/mod_proxy_connect.so  
#http代理模块
LoadModule proxy_http_module modules/mod_proxy_http.so 
#负载均衡模块
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
#算法默认是byrequest,可以是bytraffic或者bybusyness
#算法模块,根据server的请求量
LoadModule lbmethod_byrequests_module  modules/mod_lbmethod_byrequests.so 
#算法模块,根据server流量
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so 
#算法模块,根据server繁忙
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so  
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
ProxyRequests Off
#LB集群组名称
<Proxy balancer://web-cluster> 
#node节点并设置权重(可很多)
BalancerMember http://192.168.56.11:8080 loadfactor=1
BalancerMember http://192.168.56.12:8080 loadfactor=2
</Proxy>
#跳转至LB集群组名称,交由后端WEB节点处理
ProxyPass /proxy balancer://web-cluster  
ProxyPassReverse /proxy balancer://web-cluster  
# Apache管理页面
<Location /manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Allow from all
</Location>

4.3重载Apache

[root@lb01 conf]# /usr/local/httpd/bin/apachectl -k graceful

测试反向代理

[root@lb01 ~]# curl http://192.168.56.10/proxy
web-node2.com
[root@lb01 ~]# curl http://192.168.56.10/proxy
web-node2.com
[root@lb01 ~]# curl http://192.168.56.10/proxy
web-node1.com
[root@lb01 ~]# curl http://192.168.56.10/proxy
web-node2.com

4.5 使用http访问Apache管理页面

访问 http://192.168.56.10/manager

blob.png

到此,Apache代理配置完成!

神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。