Apache实现反向代理详解

通过Apache实现反向代理的功能,类似Nginx反向代理和HAProxy反向代理。

环境准备

逻辑架构如下

前端是apche服务器,监听80端口,后端有两台web服务器,分别是node1和node2

Apache实现反向代理详解

准备两台机器,node1和node2。需要安装的服务如下,由于实验环境资源有限,把反向代理也安装在node1上

实验系统版本

[root@linux-node1 ~]# cat /etc/RedHat-release
CentOS Linux release 7.3.1611 (Core)
[root@linux-node1 ~]# uname -rm
3.10.0-514.el7.x86_64 x86_64
[root@linux-node1 ~]#

配置两台节点做web服务器,监听8080端口

关闭firewalld和selinux,主机名改名。按上面表格更改。这里就不写具体执行步骤了 

两台机器安装epel7的阿里云的源,安装一些依赖包和常用工具包,安装httpd,更改默认监听端口为8080

rpm -ivh 
yum install -y gcc glibc gcc-c++  make screen tree lrzsz
yum install httpd -y
sed -i 's#Listen 80#Listen 8080#g' /etc/httpd/conf/httpd.conf
systemctl restart httpd.service
netstat -lntp | grep 8080

分别设置首页文件。用以区分不同的机器

echo "linux-node2.example.com" > /var/www/html/index.html
echo "linux-node1.example.com" > /var/www/html/index.html

 

最终达到如下效果

[root@linux-node2 ~]# curl :8080/
linux-node2.example.com
[root@linux-node2 ~]# 
[root@linux-node1 ~]# curl :8080/
linux-node1.example.com
[root@linux-node1 ~]# 

node1上配置apache做反向代理

编译安装apache软件包

node1同时做反向代理配置,执行如下命令,把源码包编译安装在/usr/local目录下,最后做个软链接。

看到需要安装apr和pcre相关的包

简要来说apr是屏蔽底层操作系统细节用的。pcre正则匹配用的。openssl支持加密协议

rpm -ivh 
yum install -y gcc glibc gcc-c++  make screen tree lrzsz
yum install -y apr-devel apr-util-devel pcre-devel openssl-devel
cd /usr/local/src
wget
tar xfz httpd-2.4.18.tar.gz
cd httpd-2.4.18
./configure --prefix=/usr/local/httpd-2.4.18 --enable-so --enable-modules="all"
make && make install
echo $?
ln -s /usr/local/httpd-2.4.18/ /usr/local/httpd

APR(Apache portable Run-time libraries,Apache可移植运行库),主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。
在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。

那安装Apache的时候为什么必须安装Apr呢?
在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。
随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用APR而已。
一般情况下,APR开发包很容易理解为仅仅是一个开发包,不过事实上并不是。
目前,完整的APR实际上包含了三个开发包:apr、apr-util以及apr-iconv,每一个开发包分别独立开发,并拥有自己的版本。
apr中包含了一些通用的开发组件,包括mmap,DSO等等
apr-util该目录中也是包含了一些常用的开发组件。这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等。
apr-iconv包中的文件主要用于实现iconv编码。目前的大部分编码转换过程都是与本地编码相关的。在进行转换之前必须能够正确地设置本地编码。
因此假如两个非本地编码A和B需要转换,则转换过程大致为A->Local以及Local->B或者B->Local以及Local->A。

node1上apache编译安装之后,检查语法以及启动服务 

[root@linux-node1 httpd-2.4.18]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@linux-node1 httpd-2.4.18]# /usr/local/httpd/bin/apachectl -k start
[root@linux-node1 httpd-2.4.18]#

接下来配置反向代理模块

打开apache官网帮助

找到左边“模块”

 

Apache实现反向代理详解

 

点击进去,找到如下mod_proxy,就是这个模块,让apache可以做反向代理

Apache实现反向代理详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/56a6f282b48caf80965835296b348d24.html