最新动态
apache做反向代理
2024-11-17 23:54

实验目的

apache做反向代理

通过apache实现反向代理的功能,类似nginx反向代理和haproxy反向代理

 


逻辑架构如下

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

apache做反向代理

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

apache做反向代理

 

实验系统版本

 

 


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

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

 

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

 
最终达到如下效果

 

 


编译安装apache软件包

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

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

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

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编译安装之后,检查语法以及启动服务 

  

接下来配置反向代理模块

打开apache官网帮助

http://httpd.apache.org/docs/2.4/
找到左边“模块”
apache做反向代理

 

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

apache做反向代理

 

 接下配准备配置,先查看下配置文件的目录。看到有个extra目录,类似nginx的extra目录,可以把一些定制化的配置放在extra目录里,然后在主配置文件httpd.conf把它include进来

这样降低配置文件之间的耦合性,不仅方便管理,而且配置文件个别错误,不影响其余配置。这里就准备新建一个反向代理相关的配置文件,放在extra目录下

先从主配置文件拷贝一些模板性的配置

apache做反向代理

 

设置主配置文件ServerName

apache和nginx一样,默认会Include一些配置文件,下面的proxy-html.conf就是默认加载的配置文件。我没做任何操作,安装之后系统默认的

apache做反向代理

查看它默认加载的模块
apache做反向代理
 
 
找到负载均衡的部分,很多proxy开头的部分。复制相关参数
apache做反向代理

 

在extra目录下新建httpd-proxy.conf文件。文件名没要求,可以自定义。但是最好能通过配置文件知道做什么用的

把上面主配置文件的反向代理和负载均衡相关的配置复制进来。

同时配置后端节点。下面的/demo 是自定义的。可以随便写,比如写成/test123

  

 

在主配置文件把这个配置文件中Include进来

apache做反向代理

 

 

检查语法,没发现语法错误

  

启动时没启动成功

  

 

看日志提示,是缺少模块

  

 百度下错误

http://blog.csdn.net/snihcel/article/details/38844667
如果你遇到了服务无法启动的情况,也不报错的,查看logs下的日志,首次安装报错如下
AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
我想日志已经说的很清楚了,这里编译安装后,配置文件conf/httpd.conf没有开启mod_slotmem_shm模块,编辑该文件,放开
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
 
在httpd-proxy.conf配置文件中添加这一行

  

再次启动,成功

  

浏览器访问,测试成功

现在是轮询算法。
apache做反向代理

apache做反向代理

 

修改配置文件,在最后打开管理功能

  

优雅重启

  

Method看到默认的方法是基于requests生产的配置需要设置权限,不要对外开放,可以允许内网一个网段访问。权限设置和apache的一样

apache做反向代理

点开左边超链接之后可以设置权重

apache做反向代理

 

 


模拟用户真实访问环境,用户是通过域名访问的,而不是IP,这里开始配置虚拟主机
 
extra默认有一个配置文件,httpd-vhosts.conf可以复制部分当模板
 
可以复制下面文件的配置
apache做反向代理
 
把原先httpd-proxy.conf配置文件里2行ProxyPass引用的放在虚拟主机里

 

配置截图如下

apache做反向代理

 
 
检查语法,重新加载

  

window的hosts文件添加域名解析

  

通过域名访问成功
apache做反向代理

 

apache做反向代理

 

 

还可以设置权重等一些参数
http://www.jinbuguo.com/apache/menu22/mod/mod_proxy.html

apache做反向代理

 

 

 

apache做反向代理生产并不建议,因为性能不高。配置麻烦

关于IO这块apache使用select模式,性能不高nginx使用epel模型,性能高varish和haproxy都是使用epel模型的,性能高

可能一些特殊场景会用到它做反向代理:可能某公司一些web服务器必须和apache反向代理结合,其余反向代理,比如nginx和haproxy无法使用。不得不用apache做反向代理了

 

 

 

    以上就是本篇文章【apache做反向代理】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/quote/24056.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多