apache和jetty组合使用有三种方式
- There are three main ways to connect Apache to Jetty:
- 1. Using Apache mod_proxy and a normal Jetty HTTP connector.
- 2. Using Apache mod_proxy_ajp and the Jetty AJP connector.
- 3. Using Apache mod_jk and the Jetty AJP connector.
jetty推荐的是第一种
- We recommend using the HTTP connectors for the following reasons:
- * Jetty performs significantly better with HTTP.
- * The AJP protocol is poorly documented and has many version irregularities.
- If you must use AJP, the mod_proxy_ajp module is better than mod_jk. Previously, the load balancing capabilities of mod_jk meant that you had to use (tolerate) it, but with Apache 2.2, mod_proxy_balancer is available and works over HTTP and AJP connectors.
第一种用mod_proxy,实际上是配置反向代理,只是简单的将url转发到jetty,如果要实现负载均衡,apache还需要加载mod_blancer。具体配置比较简单,首先在httpd.conf添加module
- LoadModule proxy_module /usr/ali/apache2/modules/mod_proxy.so
- LoadModule proxy_balancer_module /usr/ali/apache2/modules/mod_proxy_balancer.so
- LoadModule proxy_http_module /usr/ali/apache2/modules/mod_proxy_http.so
- LoadModule proxy_ajp_module /usr/ali/apache2/modules/mod_proxy_ajp.so
- LoadModule jk_module /usr/ali/apache2/modules/mod_jk.so
然后在httpd.conf末尾加上反向代理配置
- ProxyRequests Off
- <Proxy *>
- Order deny,allow
- Allow from all
- </Proxy>
- ProxyPass /test http://localhost:8080/
- ProxyPass / http://localhost:8080/
apache配置的是80端口,当访问http://localhost或者http://localhost/test时,请求应该转发到jetty,就是http://localhost:8080,配置完成后,启动apache,然后访问http://localhost,访问的是jetty页面。
如果要配置负载均衡,假设本机有两个jetty实例,监听端口分别是8080,8090。则简单的负载均衡配置部分如下
- ProxyRequests Off
- <Proxy *>
- Order deny,allow
- Allow from all
- </Proxy>
- ProxyPass /test balancer://mycluster
- ProxyPass / balancer://mycluster
- <Proxy balancer://mycluster>
- BalancerMember http://localhost:8080
- BalancerMember http://localhost:8090
- </Proxy>