前几天实验了下 nginx 配置反向代理服务器。虽然 nginx 的安装很麻烦,但是用起来倒是很简单。不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作量,我决定使用 apache。

我记得本科时安装过 apache 服务器,当初没有遇到困难。而这次安装却总也安装不成功,公司对机器的权限管理的很严格,我没有 root 权限,没有连接外网权限,编译 apache 时有很多依赖拿不到,最后还是请 ops team 的人帮忙搞定的。

配置 proxy module。apache 服务器的 proxy module 是安装可选的,编译时没有加入反向代理 module,但在编译完成后,依然可以通过修改配置动态加载。配置在 conf/httpd.conf 中,把反向代理相关的 module uncomment 就好。这里需要注意,如果 module 之间存在依赖关系,apache 不会自动 resolve 依赖,反之,它会在 error.log 中告诉我们缺少哪个模块。

至于反向代理的配置,也在 httpd.conf 中,配置的写法和 nginx 非常类似,对于我的需求,只要在 httpd.conf 中添加

Listen 8080

<VirtualHost *:8080>
LogLevel error <Location />
ProxyPass http://hostname1:2014/
ProxyPass http://hostname2:2014/
#ProxyPassReverse http://mywebsite.jamescoyle.net/
</Location> </VirtualHost>

  

需要注意,2014端口后面需要添加一个 / 不然 url 的转换会出错。

关闭 hostname1 上的服务后,apache 会把 request 路由到 hostname2 上,和我需求一致。

反向代理搭建完毕后我依然对某些配置不是很理解,比如  ProxyPassReverse,ServerName 等等。

后记:上面并没有实现负载均衡。

<VirtualHost *:2014>
LogLevel info <Proxy balancer://mycluster>
BalancerMember http://host1:2015
BalancerMember http://host2:2015
</Proxy> ProxyPass / balancer://mycluster/ </VirtualHost>

  

我以为配上两个 ProxyPass 就实现了负载均衡,实际并非如此, ProxyPass 配置多条的话,后面的会覆盖前面的,但是好处是当一个 node down 掉后,apache 会自动路由到可用的。上面的配置才是真正的负载均衡,策略是默认的 byRequests. 需要注意的是, BalanceMember 后面没有 /,ProxyPass 后面有 /

配置完测试了几次,发现两个 node 都有请求的到来。

关于配置:

apache 提供了很多详细的配置,用于自定义反向代理/负载均衡的行为。比如,lbmethod 可以选取 byRequests, byTraffic 等等,还可以设置 lbfactor, timeout, retry

apache 配置反向代理服务器的更多相关文章

  1. Tomcat:利用Apache配置反向代理、负载均衡

    本篇主要介绍apache配置反向代理,介绍了两种情况:第一种是,只使用apache配置反向代理:第二种是,apache与应用服务器(tomcat)结合,配置反向代理,同时了配置了负载均衡. 准备工作 ...

  2. Apache配置反向代理、负载均衡和集群(mod_proxy方式)

    Apache配置负载均衡和集群使用mod_jk的方式比较多,但是mod_jk已经停止更新,并且配置相对复杂.Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比mod_jk简单很多. 1 ...

  3. Nginx配置反向代理服务器

    首先,在阅读<深入理解Nginx模块>后,大体了解了配置反向代理服务器一些常见的配置.如下进行说明:” l  Nginx worker进程个数 语法: worker_processes n ...

  4. Apache 做反向代理服务器

    apache做反向代理服务器 apache代理分为正向代理和反向代理: 1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web ...

  5. wdlinux中apache配置反向代理模块

    想要在.htaccess中开启反向代理功能都不行[apache中没有mod_proxy模块] .htaccess 文件内容如下 RewriteEngine On RewriteBase / Rewri ...

  6. apache做反向代理服务器

    apache代理分为正向代理和反向代理: 1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代 ...

  7. apache 配置反向代理 设置

    1.下载 安装 下载地址:http://httpd.apache.org/download.cgi 将apache 安装到某个目录中 修改conf/http.conf文件 修改配置文件端口  (端口为 ...

  8. apache配置反向代理

    http.conf 去掉前面的#号 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/ ...

  9. apache反向代理服务器

    1 正向代理: 客户端无法直接访问外部的web,需要在客户端所在的网络内架设一台代理服务器,客户端通过代理服务器访问外部的web(需要在客户端的浏览器中设置代理服务器) 适用于: ①局域网的代理服务器 ...

随机推荐

  1. Javascript开发之工具归纳

    写在前面 由于JS开发对我来说是全新的技术栈,开发过程中遇到了各种各样的框架.工具,同时也感叹一下相对于.Net的框架(工具框架以及测试框架等)JS框架真的是太丰富了.社区的力量果然强大---也是由此 ...

  2. Wix 安装部署(五) Bootstrapper 捆绑安装

    Wix的xml配置确实很费劲,忍不住有点像吐槽一下,前四篇完成的功能在Windows Installer中通过配置能很快的弄出来.可惜有很多加了锁的功能在InstallShield Limited E ...

  3. MongoDB中的字段类型Id

    众所周知,在向MongoDB的集合中添加一条记录时,系统会自动增加一个字段名为"_id",类型为ObjectId的字段,其值为24位字符串,可以使用此值作为记录的唯一标识. 项目中 ...

  4. javascript和C#比较

    C#和javascript有很多相似的地方,比如: 序列化 C#序列化 首先需要引用 using System.Web.Script.Serialization;//System.Web.Extens ...

  5. [C++] socket - 2 [UDP通信C/S实例]

    服务端: #include<iostream> #include<winsock2.h> #include<stdio.h> #pragma comment(lib ...

  6. C# 6.0那些事

    这两天期中考试没时间去看Connect();直播,挺可惜的,考完后补看了Connect(); 把C#6.0的新东西总结一下. 自动属性初始化 (Initializers for auto-proper ...

  7. Jenkins Git 中文乱码问题解决

    解决方法: x:\Jenkins\jenkins.xml 新增蓝色粗体标记参数(-Dfile.encoding=utf-8),然后重启Jenkins服务,完毕! <arguments>-X ...

  8. 深入理解JavaScript 事件

    本文总结自<JavaScript高级程序设计>以及自己平时的经验,针对较新浏览器以及 DOM3 级事件标准(2016年8月),对少部分内容作了更正,增加了各种例子及解析. 如无特殊说明,本 ...

  9. NSIS总结1——以管理权限运行

    在Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" 到第一个Section之间插入一行代码 RequestExecutionLevel admin ...

  10. VS2015 Apache Cordova第一个Android和IOS应用

    前言 本人个人博客原文链接地址为http://aehyok.com/Blog/Detail/75.html. 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehy ...