`
gogo1217
  • 浏览: 152104 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache HTTP Server 常用模块之 mod_proxy

阅读更多
反向代理模块,是比较常用的模块,这里要说明下正向代理和反向代理的区别。

反向代理和正向代理的区别

我们以在国内访问 Google 搜索引擎为例:

  • 浏览器输入地址为 www.google.com,同时配置代理服务器 10.1.1.1 ,那么 10.1.1.1 叫做正向代理。

    在这种模式下,客户端浏览器不直接访问Google,而是委托给中间服务器 10.1.1.1 ,让这个中间服务器代替客户端访问Google。对于客户端浏览器来说,需要指定代理服务器地址,同时也需要知道目标网站地址。

  • 浏览器输入地址为 www.googleproxy.com,那么 www.googleproxy.com 叫做反向代理。

    在这种模式下,客户端浏览器访问的是 www.googleproxy.com,而不是 www.google.com;www.googleproxy.com 收到的任何请求,都被他内部请求到了 www.google.com 然后把内容返回给客户端,有点镜像的味道(就像这些内容原本就是它自己的一样)。

从上面两个例子可以看出,正向代理,对于服务器来说,隐藏了客户端地址;而反向代理,对于客户端来说,隐藏了真实的服务器地址。

实战

这是一组应用服务器:

http://192.168.0.2:8080/sso
http://192.168.0.3:8080/dss
http://192.168.0.3:8082/dss
http://192.168.0.4:8082/dss

这些服务器之间是相互联通的,但是只有 192.168.0.2 这台服务器的 80 端口 客户才能正常访问,其他地址客户均无法访问,怎么办?dss 的应用压力比较大,我希望做个集群负载均衡,该怎么配置?

没错,我们可以使用 mod_proxy 来解决这些问题

  • 在 192.168.0.2 上正确安装 apache,并监听在 80 端口上
  • 找到 httpd.conf,将删除每行前面的 # ,使得这些模块能正常加载
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
  • httpd.conf,增加以下配置,把这些配置独立为一个 proxy.conf 文件,然后在httpd.conf通过Include指令加载进来是一个不错的注意。
ProxyRequests Off

#将sso的请求转化为内部代理请求 到http://192.168.0.2:8080/sso
ProxyPass /sso http://192.168.0.2:8080/sso
ProxyPassReverse /sso http://192.168.0.2:8080/sso

#将dss的请求转发为一个负载均衡的请求
ProxyPass /dss balancer://ssocluster lbmethod=byrequests stickysession=JSESSIONID  nofailover=Off
ProxyPassReverse / balancer://ssocluster
<Proxy balancer://ssocluster>
    BalancerMember http://192.168.0.3:8080/dss loadfactor=20 route=jvm38080
    BalancerMember http://192.168.0.3:8082/dss loadfactor=20 route=jvm38082
    BalancerMember http://192.168.0.4:8082/dss loadfactor=60 route=jvm48082
</Proxy>
  • 修改每个 tomcat 服务器的conf/server.xml配置文件,添加jvmRoute,要注意的是一个集群内的 tomcat 的 jvmRoute 值不应该有相同的,为了避免多个tomcat冲突,将该值设置为IP最后一位 + 端口是一个不错的注意。对比 tomcat 生成的 JSESSIONID值,配置之前为640773D3EE234F0153E40B848A392038,配置之后为640773D3EE234F0153E40B848A392038.jvm38080,会发现jvmRoute会自动附加在未配置前的JSESSIONID上,并以.隔开。

下面对这些关键的指令进行说明

  • ProxyPass apache 收到客户端发起的以 /sso 开始的URL请求时,自动转化为一个内部请求到 http://192.168.0.2:8080/sso的请求

  • ProxyPassReverse 当 apache 收到一个被代理的服务器发起的以 http://192.168.0.2:8080/sso 开始的重定向 URL 时,apache 自动 转化为用户请求的 URL,客户端收到的地址为重定向至 http://192.168.0.2/sso,这里有个好处就是,如果 apache 具备多个IP地址,当不同的用户通过不同的IP访问apache时,他总是能重写至用户所请求的IP上。

  • stickysession 是通过名称为JSESSIONID的 cookies 来保持这个用户的请求总是保留在一个tomcat上。

  • BalancerMember 为一个集群的成员

  • loadfactor 集群成员所担负请求的权重,20的意思是 20% 的请求代理到该 tomcat 上;
  • route 集群成员 tomcat 配置文件中所指定的jvmRoute,举例:如果客户端发起了一个/dss的请求,cookies中的JSESSIONID640773D3EE234F0153E40B848A392038.jvm38080,则 apache 会代理到到 http://192.168.0.3:8082/dss 上,这样子保证了用户的会话总是保持在一个tomcat上,而不会因为随机选择一个集群成员 tomcat 导致客户端重复登录(当然可以避免,需要做到多个tomcat的session共享)。

集群中的一个 tomcat 宕机后,客户端发起的请求会自动代理到其他正常的服务器上,客户端对宕机无感知

1
0
分享到:
评论

相关推荐

    webServer / Apache / apache / apache http server / mod_cluster

    Apache HTTP Server的核心功能包括处理HTTP协议,静态内容服务,以及通过各种模块(如mod_rewrite、mod_proxy等)支持动态内容和反向代理。在大型部署中,为了提高系统的可扩展性和可靠性,通常会使用负载均衡技术,...

    Apache_HTTP_Server_2.4.12_JiSuXia.rar

    4. **模块更新**:Apache 2.4.12中的多个核心模块得到了更新和增强,如mod_rewrite用于URL重写,mod_proxy用于反向代理和负载均衡,以及mod_deflate用于内容压缩,这些都为服务器的灵活性和功能扩展提供了基础。...

    Mod_Proxy+Apache+Tomcat负载均衡与集群配置

    基于软件的负载均衡技术有多种实现,其中包括Apache HTTP Server的模块mod_jk和mod_proxy。mod_jk是一种被广泛使用的技术,它通过JK插件与Tomcat进行集成,实现集群中各个实例的负载均衡。mod_proxy则是Apache HTTP ...

    apache server_HTTP_apache_

    标题"apache server_HTTP_apache_"暗示我们将深入探讨Apache HTTP Server在HTTP服务中的角色和其主要特性。 Apache HTTP Server的核心特性包括: 1. **模块化设计**:Apache HTTP Server采用模块化结构,可以根据...

    Apache HTTP Server Version 2.2 文档(2013.4.10最新)

    mod_proxy_http mod_rewrite mod_setenvif mod_so mod_speling mod_ssl mod_status mod_suexec mod_unique_id mod_userdir mod_usertrack mod_version mod_vhost_alias mpmt_os2(MPM) Apache MPM 公共指令 mpm_...

    Apache_HTTP_Server_2.4.12_x64_x86

    Apache可以通过mod_jk或mod_proxy_ajp模块与Java应用服务器进行通信。 7. **CGI支持**:Apache能够执行CGI(Common Gateway Interface)脚本,允许服务器与外部程序交互,如Perl、Python或PHP,从而提供动态内容。 ...

    Apache负载均衡设置方法 mod_proxy使用介绍

    `mod_proxy`模块提供了基础的代理功能,`mod_proxy_balancer`模块负责负载均衡策略,而`mod_proxy_http`则使得Apache能够支持HTTP协议的代理。 接下来,配置负载均衡器: 1. 关闭直接的代理请求,以防外部直接访问...

    Apache_HTTP_Server_与_Tomcat_的三种连接方式介绍.doc

    2. **Reverse Proxy 方式**:使用 `mod_proxy` 和 `mod_proxy_http`,将 Apache 配置为反向代理,适用于 HTTP/HTTPS 协议,可以将请求直接转发给 Tomcat 的 HTTP Connector。 #### 总结 Apache 和 Tomcat 的结合...

    Apache HTTP Server 与 Tomcat 的连接方式介绍

    如果不希望使用AJP协议,可以选择mod_proxy_http模块,让Apache通过HTTP协议与Tomcat通信。这种方式更适用于Tomcat运行在另一个服务器或者不同端口的情况。 四、配置示例 以mod_proxy为例,配置步骤如下: 1. ...

    Apache HTTP Server 与 Tomcat 的三种连接方式介绍

    集成模式通过Apache的模块(如mod_jk或mod_proxy_ajp)实现Apache与Tomcat的紧密集成。mod_jk是用于Apache与Tomcat间通信的Apache模块,它通过AJP协议处理请求转发。mod_proxy_ajp则是Apache 2.2及以上版本的内置...

    weblogic各系统.so文件

    这通常涉及到配置Apache的HTTP服务器模块,如mod_proxy、mod_proxy_balancer等,以路由请求到不同的WebLogic服务器实例。 【标签】:“Apache WebLogic整合”涉及以下关键知识点: 1. **Apache HTTP Server**:这...

    Oracle WebLogic Web Server Plug-Ins (mod_wl_24.so)

    WebLogic Web Server Plugins 12c now supports Apache 2.4.x Web Server and can proxy WebSocket applications deployed within WebLogic Server 12.1.2+ when configured with Apache 2.2.x and 2.4.x Web ...

    tomcat_apache_mod

    描述中的“tomcat集群配置所需的几个工具”可能包括Apache HTTP Server、Tomcat服务器、mod_proxy模块,以及可能的集群管理工具,如Apache HTTP Server的mod_jk或mod_proxy_ajp模块。这些工具的配合使用,可以实现多...

    apache +tomcat集群 ajp_proxy实际操作

    - 若要实现更高级的负载均衡,可以使用`mod_proxy_balancer`模块。示例配置如下: ```apache *:80&gt; ... &lt;IfModule proxy_balancer_module&gt; ProxyPass / balancer://mycluster stickysession=JSESSIONID ...

    Apache HTTP Server API文档

    Apache HTTP Server,通常简称为Apache,是世界上最流行的Web服务器软件之一,它开源、免费,并且具有高度可扩展性。此API文档是Apache服务器的核心组成部分,提供了详细的开发接口和指南,帮助开发者了解如何与...

    Apache_Http_Server安装与配置完美手册

    在Apache中,可以通过模块mod_proxy和mod_proxy_balancer实现: 1. **mod_proxy**:这个模块允许Apache作为一个代理服务器,转发请求到其他服务器。 2. **mod_proxy_balancer**:用于创建和管理负载平衡群集,它可以...

    Apache HTTP Server Version 2.2 中文帮助详解文档

    Apache HTTP Server,通常简称为Apache,是世界上最广泛使用的网络服务器软件之一。这个开源项目由Apache软件基金会维护,它提供了一个跨平台的、稳定的、高性能的HTTP(超文本传输协议)服务环境。Apache 2.2版本是...

    apache转发服务器

    Apache的这项功能主要依赖于它的模块mod_proxy。 一、Apache转发服务器的工作原理 在反向代理模式下,用户直接访问的是Apache服务器,而Apache服务器再将用户的请求转发给实际提供服务的后台服务器。后台服务器对...

    apache2.4 mod_jk.so for linux 64bit

    需要注意的是,`mod_jk`提供了良好的性能和稳定性,但也有其他替代方案,如`mod_proxy_ajp`和`mod_proxy_http`,它们也能实现类似的反向代理功能。选择哪种方案取决于具体需求,如性能、负载均衡策略以及对旧版本...

Global site tag (gtag.js) - Google Analytics