使用apache 2.2 mod_proxy做tomcat web应用反向代理

apache的配置

mod_proxy 支持转发代理和反向代理,所以配置反向代理时首先需要关闭转发代理,关闭方式见下面配置示例备注

# Put this after the other LoadModule directives
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

# Put this in the main section of your configuration (or desired virtual host, if using Apache virtual hosts)
# 关闭转发代理
ProxyRequests Off
# 指定使用原始Http header的Host属性,在后端服务需要知道原始Host属性
# 时会很有用,默认是关闭的
ProxyPreserveHost On

# 对被代理资源的指令说明

    # Order说明deny 和 allow的执行顺序
    # 一般这个指令可以解释为默认应用xx规则除了yy规则之外
    # xx和yy规则在Order下方指定
    Order deny,allow
    Allow from all


# 激活针对特定地址的反向代理
ProxyPass /confluence http://app-server.internal.example.com:8090/confluence
# 这个指令会调整HTTP redirect response Header中的 Location, Content-Location 和 URI 属性中的URL到代理服务器地址
# 作为反向代理服务时强烈建议开启这个选项,避免透传请求到后端服务
ProxyPassReverse /confluence http://app-server.internal.example.com:8090/confluence
# 对新的url权限进行说明

    Order allow,deny
    Allow from all

tomcat的配置

tomcat中的配置左右主要是告诉tomcat redirect或者forward的时候使用代理地址,而不是上一节点所请求的实际服务器地址,具体配置如下


上面配置中的proxyNameproxyPort就是告诉tomcat代理服务器的地址和端口。在servlet中可以通过下面的代码获得这两个参数的值

request.getServerName();
request.getSreverPort();
  • 本文主要来自atlanssian的一份配置说明 和 apache 关于mod_proxy的介绍
  • 另一篇Atlassian出品的很详细的proxy配置说明 https://confluence.atlassian.com/kb/proxying-atlassian-server-applications-with-apache-http-server-806032611.html

你可能感兴趣的:(使用apache 2.2 mod_proxy做tomcat web应用反向代理)