http://www.jianshu.com/p/699f158b218b

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
Header add Access-Control-Allow-Origin *
Header add Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header add Access-Control-Allow-Headers "Content-Type"
# 对被代理资源的指令说明
<Proxy *>
    # Order说明deny 和 allow的执行顺序
    # 一般这个指令可以解释为默认应用xx规则除了yy规则之外
    # xx和yy规则在Order下方指定
    Order deny,allow
    Allow from all
</Proxy>

# 激活针对特定地址的反向代理
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权限进行说明
<Location /confluence>
    Order allow,deny
    Allow from all
</Location>
tomcat的配置

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

<Connector port="9080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="9443"
    proxyName="sample.com" proxyPort="80"/>
上面配置中的proxyName和proxyPort就是告诉tomcat代理服务器的地址和端口。在servlet中可以通过下面的代码获得这两个参数的值

request.getServerName();
request.getSreverPort();

results matching ""

    No results matching ""